1. 程式人生 > 程式設計 >Python urllib庫如何新增headers過程解析

Python urllib庫如何新增headers過程解析

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

方法一:藉助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要寫為一個元組型別才可以。寫為字典型別的話會報錯!

方法二、建立一個Request例項物件

# 案例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)

#出現有些解碼錯誤的話,加上“ignore”就可以啦
print(file.read().decode("utf-8",'ignore'))

注意:此處的headers要寫為一個字典型別才可以。

建立一個Reques物件,把需要的headers,url,proxy 都放進去,或者在post 請求中還可以把編碼過後的data 值放進去,再用urlopen 開啟,就比較方便了。

另外,這種方法還可以用add_headers()來新增headers,程式碼如下:

import urllib.request
try:
  url="http://www.meizitu.com"
  req=urllib.request.Request(url=url)

  req.add_header("User-Agent",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))

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。