Python urllib庫如何添加headers過程解析
對于請求一些網(wǎng)站,我們需要加上請求頭才可以完成網(wǎng)頁的抓取,不然會得到一些錯誤,無法返回抓取的網(wǎng)頁。下面,介紹兩種添加請求頭的方法。
方法一:借助build_opener和addheaders完成
import urllib.requesturl='http://www.meizitu.com'#注意:在urllib 中headers是元組headers=('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE')opener=urllib.request.build_opener()opener.addheaders=[headers]data=opener.open(url)print(data.read())
注意:此處的headers要寫為一個元組類型才可以。寫為字典類型的話會報錯!
方法二、創(chuàng)建一個Request實例對象
# 案例1import urllib.requesturl='http://www.meizitu.com'#注意:在urllib 中這種的headers 是需要是字典的headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}req=urllib.request.Request(url=url,headers=headers)file=urllib.request.urlopen(req)#出現(xiàn)有些解碼錯誤的話,加上“ignore”就可以啦print(file.read().decode('utf-8',’ignore’))
注意:此處的headers要寫為一個字典類型才可以。
創(chuàng)建一個Reques對象,把需要的headers,url,proxy 都放進(jìn)去,或者在post 請求中還可以把編碼過后的data 值放進(jìn)去,再用urlopen 打開,就比較方便了。
另外,這種方法還可以用add_headers()來添加headers,代碼如下:
import urllib.requesttry: url='http://www.meizitu.com' req=urllib.request.Request(url=url) req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE') file=urllib.request.urlopen(req,timeout=10.1) print(file.read().decode('utf-8',’ignore’))except Exception as e: print('時間超時',str(e))
總結(jié):通過以上兩種方法,可以完成請求頭的相關(guān)參數(shù)設(shè)置,但是得注意headers是用字典類型來傳入還是元組類型。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Android webview注入JS代碼 修改網(wǎng)頁內(nèi)容操作2. 一文秒懂idea的git插件跟翻譯插件3. docker compose idea CreateProcess error=2 系統(tǒng)找不到指定的文件的問題4. XML解析錯誤:未組織好 的解決辦法5. 解決ajax的delete、put方法接收不到參數(shù)的問題方法6. 將properties文件的配置設(shè)置為整個Web應(yīng)用的全局變量實現(xiàn)方法7. PHP 工程師面試的四個環(huán)節(jié)8. asp下利用xml打包網(wǎng)站文件9. 讀大數(shù)據(jù)量的XML文件的讀取問題10. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向
