urllib库添加headers的一般方法
生活随笔
收集整理的這篇文章主要介紹了
urllib库添加headers的一般方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
對于請求一些網(wǎng)站,我們需要加上請求頭才可以完成網(wǎng)頁的抓取,不然會得到一些錯誤,無法返回抓取的網(wǎng)頁。下面,介紹兩種添加請求頭的方法。
方法一:借助build_opener和addheaders完成
import urllib.request url="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實例對象
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' # 案例1 import urllib.request url="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 都放進去,或者在post 請求中還可以把編碼過后的data 值放進去,再用urlopen 打開,就比較方便了。
另外,這種方法還可以用add_headers()來添加headers,代碼如下:
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' import urllib.request try: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是用字典類型來傳入還是元組類型。
總結(jié)
以上是生活随笔為你收集整理的urllib库添加headers的一般方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中数组的del,remove
- 下一篇: python3 的 str bytes