首頁 > 上網技巧 > 電腦小技巧 > python使用urllib2抓取網頁

python使用urllib2抓取網頁

時間:2020-01-06 19:36 作者:QQ地帶 我要評論

1、使用python的庫urllib2,用到urlopen和Request方法。
 
2、方法urlopen原形
 
urllib2.urlopen(url[, data][, timeout])
 
其中:
 
url表示目標網頁地址,可以是字符串,也可以是請求對象Request
 
data表示post方式提交給目標服務器的參數
 
timeout表示超時時間設置
 
改方法返回一個類似文件的對象,有geturl()、info()、read()方法其中geturl()返回連接地址,info()返回網頁信息。
 
要獲取網頁內容可以使用read()方法,read也可以帶參數,表示讀取內容的大小(字節)。
 
>>> import urllib2  
>>> socket = urllib2.urlopen("http://www.baidu.com")  
>>> content = socket.read()  
>>> socket.close()  
這樣,網頁的內容(content)就爬下來了,但是有些網站禁止爬蟲,如果直接請求會出現以下錯誤:
 
urllib2.HTTPError: HTTP Error 403: Forbidden
 
解決方法是可以在請求加上頭信息,偽裝成瀏覽器的訪問行為,需要用到Request方法:
 
3、方法Request原型
 
urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])
 
其中:
 
url表示目標網頁地址,可以是字符串,也可以是請求對象Request
 
data表示post方式提交給目標服務器的參數
 
headers表示用戶標識,是一個字典類型的數據,有些不允許腳本的抓取,所以需要用戶代理,像火狐瀏覽器的代理就是類似:Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11 瀏覽器的標準UA格式為:瀏覽器標識 (操作系統標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識 版本信息 ,headers默認是Python-urllib/2.6
 
origin_req_host表示請求方的主機域名或者ip地址
 
unverifiable還沒搞懂。。。
 
看一個例子:
 
>>> headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'}  
>>> req = urllib2.Request(url="http://blog.csdn.net/deqingguo",headers=headers)  
>>> socket = urllib2.urlopen(req) 
>>> content = socket.read()  
    >>> socket.close()  

標簽: Python
頂一下
(0)
0%
踩一下
(0)
0%

Google提供的廣告

体彩混合过关计算器