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以及有誤下劃線的區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章