用Python寫爬蟲——僞裝http請求

首先運行以下代碼觀察控制檯

import urllib2
# 在HTTPHandler增加參數"debuglevel=1"將會自動打開Debug log 模式,
# 程序在執行的時候會打印收發包的信息
http_handler = urllib2.HTTPHandler(debuglevel=1)
# 調用build_opener()方法構建一個自定義的opener對象,參數是構建的處理器對象

opener = urllib2.build_opener(http_handler)
request = urllib2.Request("http://www.baidu.com/")
response = opener.open(request)
#注意: urllib2.urlopen 內部會創建一個opener去幫助完成請求,這樣寫有助於分析請求日誌

控制檯結果如下

send: 'GET / HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: www.baidu.com\r\n
Connection: close\r\n
User-Agent: Python-urllib/2.7\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Mon, 02 Apr 2018 02:51:38 GMT
header: Content-Type: text/html; charset=utf-8
header: Transfer-Encoding: chunked
header: Connection: Close
header: Vary: Accept-Encoding
header: Set-Cookie: BAIDUID=00632BF77DF14CBA73BF8C27488178EA:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
header: Set-Cookie: BIDUPSID=00632BF77DF14CBA73BF8C27488178EA; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

請注意User-Agent的值是Python-urllib/2.7,這樣去請求就好比告訴服務器請求來源是爬蟲,所以我們需要去包裝HTTP請求頭。
User-Agent是什麼:User Agent中文名爲用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。

import urllib2

url = "http://www.baidu.com"

# User-Agent,包含在 ua_header裏
ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} 

#  url 連同 headers,一起構造Request請求,這個請求將附帶 IE9.0 瀏覽器的User-Agent
request = urllib2.Request(url, headers = ua_header)

# 向服務器發送這個請求
response = urllib2.urlopen(request)

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