国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

零基礎寫python爬蟲之urllib2中的兩個重要概念:Openers和Handlers

2020-02-23 06:07:15
字體:
來源:轉載
供稿:網友

在開始后面的內容之前,先來解釋一下urllib2中的兩個個方法:info / geturl
urlopen返回的應答對象response(或者HTTPError實例)有兩個很有用的方法info()和geturl()

1.geturl():

這個返回獲取的真實的URL,這個很有用,因為urlopen(或者opener對象使用的)或許會有重定向。獲取的URL或許跟請求URL不同。
以人人中的一個超級鏈接為例,
我們建一個urllib2_test10.py來比較一下原始URL和重定向的鏈接:

代碼如下:
from urllib2 import Request, urlopen, URLError, HTTPError 
old_url = 'http://rrurl.cn/b1UZuP' 
req = Request(old_url) 
response = urlopen(req)   
print 'Old url :' + old_url 
print 'Real url :' + response.geturl() 

運行之后可以看到真正的鏈接指向的網址:

2.info():

這個返回對象的字典對象,該字典描述了獲取的頁面情況。通常是服務器發送的特定頭headers。目前是httplib.HTTPMessage 實例。
經典的headers包含"Content-length","Content-type",和其他內容。
我們建一個urllib2_test11.py來測試一下info的應用:

代碼如下:
from urllib2 import Request, urlopen, URLError, HTTPError 
old_url = 'http://www.baidu.com' 
req = Request(old_url) 
response = urlopen(req)   
print 'Info():' 
print response.info() 

運行的結果如下,可以看到頁面的相關信息:

下面來說一說urllib2中的兩個重要概念:Openers和Handlers。

1.Openers:

當你獲取一個URL你使用一個opener(一個urllib2.OpenerDirector的實例)。
正常情況下,我們使用默認opener:通過urlopen。
但你能夠創建個性的openers。

2.Handles:

Openers使用處理器handlers,所有的“繁重”工作由handlers處理。
每個handlers知道如何通過特定協議打開URLs,或者如何處理URL打開時的各個方面。
例如HTTP重定向或者HTTP cookies。

如果你希望用特定處理器獲取URLs你會想創建一個openers,例如獲取一個能處理cookie的opener,或者獲取一個不重定向的opener。

要創建一個 opener,可以實例化一個OpenerDirector,
然后調用.add_handler(some_handler_instance)。
同樣,可以使用build_opener,這是一個更加方便的函數,用來創建opener對象,他只需要一次函數調用。
build_opener默認添加幾個處理器,但提供快捷的方法來添加或更新默認處理器。
其他的處理器handlers你或許會希望處理代理,驗證,和其他常用但有點特殊的情況。

install_opener 用來創建(全局)默認opener。這個表示調用urlopen將使用你安裝的opener。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济宁市| 平乡县| 晋江市| 衡南县| 芜湖市| 上虞市| 乐昌市| 南皮县| 云南省| 紫阳县| 乌拉特中旗| 尼木县| 静乐县| 东兴市| 迁西县| 罗平县| 龙井市| 岑巩县| 章丘市| 余姚市| 略阳县| 塔城市| 宿松县| 武隆县| 迁安市| 南陵县| 双辽市| 元氏县| 涟源市| 织金县| 通州市| 吴堡县| 庄河市| 甘谷县| 塘沽区| 临沭县| 万年县| 康保县| 安宁市| 德惠市| 霍林郭勒市|