urllib2中自定義opener

2021-09-07 05:44:10 字數 1535 閱讀 2565

正常用python抓取網頁資訊,需要用到urllib2,呼叫urllib2.urlopen(url),可以獲得response 反饋資訊,再用response.read()即可獲得頁面的原始碼。

最簡單的抓包**:

import urllib2  

response = urllib2.urlopen('')

html = response.read()

print html

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

1.openers:

當你獲取乙個url你使用乙個opener(乙個urllib2.openerdirector的例項)。

正常情況下,我們使用預設opener:通過urlopen。

但你能夠建立個性的openers。

2.handles:

openers使用處理器handlers,所有的「繁重」工作由handlers處理。

每個handlers知道如何通過特定協議開啟urls,或者如何處理url開啟時的各個方面。

在你使用**上網或其他的情況就需要自己建立乙個 opener,可以例項化乙個openerdirector,

然後呼叫.add_handler(some_handler_instance)。

同樣,可以使用build_opener,這是乙個更加方便的函式,用來建立opener物件,他只需要一次函式呼叫。

build_opener預設新增幾個處理器,但提供快捷的方法來新增或更新預設處理器。

其他的處理器handlers你或許會希望處理**,驗證,和其他常用但有點特殊的情況。

install_opener 用來建立(全域性)預設opener。這個表示呼叫urlopen將使用你安裝的opener。

opener物件有乙個open方法。

該方法可以像urlopen函式那樣直接用來獲取urls:通常不必呼叫install_opener,除了為了方便。

import urllib2  

proxy_handler = urllib2.proxyhandler()

opener = urllib2.build_opener(proxy_handler)

urllib2.install_opener(opener)

response = urllib2.urlopen('')

html = response.read()

print html

import urllib2  

proxy_handler = urllib2.proxyhandler()

opener = urllib2.build_opener(proxy_handler)

response = opener.open('')

html = response.read()

print html

python中urllib2的學習

get方法 通常用於請求伺服器傳送某個資源,而且應該是安全的和冪等的。post方法 向伺服器提交資料,比如完成表單資料的提交,將資料提交給伺服器處理 get和post方法的區別 urlopen url,data none,timeout 傳遞乙個url引數,新增post需要的data,返回值是乙個類...

自定義控制項(2)

自定義伺服器控制項屬性的特性 bindable 這個特性表示屬性是否可以繫結乙個有效資料來源。通常使用布林值進行設定。例如 bindable true 如果使用值true標記屬性,表示該屬性可以繫結乙個有效資料來源,且應引發該屬性的屬性更改通知。browsable 指定屬性是否應該在屬性瀏覽器中顯示...

JSF2中自定義Validator

寫過一篇關於jsf2中validator的實現,但那是jsf1中的實現方式,後來了解到jsf2中的實現其實更簡單,其實只需要倆步 1.定義validator類,並實現validator介面,並使用 facesvalidator註解 2.在頁面中應用 emailvalidator facesvalid...