01-urllib庫添加headers的一般方法

來源:互聯網
上載者:User

標籤:col   except   cep   開啟   5.0   群組類型   post   urlopen   user   

2018-08-23 13:07:57

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

 

方法一:藉助build_opener和addheaders完成

 

1 import urllib.request2 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是用字典類型來傳入還是元群組類型。

 

01-urllib庫添加headers的一般方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.