1. 程式人生 > >02Python爬蟲---瀏覽器的模擬Headers屬性

02Python爬蟲---瀏覽器的模擬Headers屬性

import urllib.request  #匯入包

使用urlopen()訪問有些網站時會出現403錯誤,禁止訪問的錯誤,這就需要爬蟲模擬成瀏覽器

一、使用build_opener()修改報頭

1、注意urlopen()不支援一些HTTP的高階功能,所以使用urllib.request.build_opener()
url = "http://blog.csdn.net/a877415861/article/details/78838301"

# 定義headers儲存對應的User-Agent資訊,定義格式為("User-Agent",具體資訊)
headers = ('User-Agent'
, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3831.602 Safari/537.36') # 建立自定義的opener opener = urllib.request.build_opener() # 物件名.addheaders = [頭資訊] ,設定對應的報頭 opener.addhandlers = [headers] # (1)opener 物件名.open( url 地址) (2)開啟網址後,再read()方法讀取對應資料
data = opener.open(url).read() print("網頁:%s"%(data))
2、將爬取到的網頁寫入檔案
fhandle = open("/home/zyb/crawler/myweb/part4/3.html", "wb")

fhandle.write(data)  # 把資料寫入3.html內

fhandle.close()  # 關閉

二、使用add_header()新增報頭

url = "http://blog.csdn.net/a877415861/article/details/78838301"

# 使用urllib.request.Request(url)  建立Request物件
req = urllib.request.Request(url) # 使用add_header()方法新增對應的報頭資訊,格式為:Request 物件名.add_header(欄位名, 欄位值) req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3831.602 Safari/537.36') # 成功設定好報頭,使用urlopen()開啟對應的網址 data = urllib.request.urlopen(req).read() print("網頁:%s"%(data))

三、注意

  兩種方法都可以實現報頭的新增,只是新增保溫的方法不同,值得注意的是,方法1中使用的是addheaders()方法,方法二中使用的是add_header()方法,注意末尾有誤s以及有誤下劃線的區別