urllib庫添加headers的一般方法


對於請求一些網站,我們需要加上請求頭才可以完成網頁的抓取,不然會得到一些錯誤,無法返回抓取的網頁。下面,介紹兩種添加請求頭的方法。

 

方法一:借助build_opener和addheaders完成

 

復制代碼
1 import urllib.request
2 url="http://www.meizitu.com"
3 #注意:在urllib 中headers是元組
4 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")
5 
6 opener=urllib.request.build_opener()
7 opener.addheaders=[headers]
8 data=opener.open(url)
9 print(data.read())
復制代碼

 

注意:此處的headers要寫為一個元組類型才可以。寫為字典類型的話會報錯!

 

方法二、創建一個Request實例對象

復制代碼
 1 # 案例1
 2 import urllib.request
 3 url="http://www.meizitu.com"
 4 #注意:在urllib 中這種的headers 是需要是字典的
 5 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"}
 6 req=urllib.request.Request(url=url,headers=headers)
 7 file=urllib.request.urlopen(req)
 8 
 9 #出現有些解碼錯誤的話,加上“ignore”就可以啦
10 print(file.read().decode("utf-8",'ignore'))
復制代碼
  • 注意:此處的headers要寫為一個字典類型才可以。
  • 創建一個Reques對象,把需要的headers,url,proxy 都放進去,或者在post 請求中還可以把編碼過后的data 值放進去,再用urlopen 打開,就比較方便了。

 

另外,這種方法還可以用add_headers()來添加headers,代碼如下:

復制代碼
 1 import urllib.request
 2 try:
 3     url="http://www.meizitu.com"
 4     
 5     req=urllib.request.Request(url=url)
 6  
 7     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")
 8     file=urllib.request.urlopen(req,timeout=10.1)
 9 
10     print(file.read().decode("utf-8",'ignore'))
11 except Exception as e:
12     print("時間超時",str(e))
復制代碼 

總結:通過以上兩種方法,可以完成請求頭的相關參數設置,但是得注意headers是用字典類型來傳入還是元組類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM