urllib模塊提供一些簡單的函數從url中讀取數據,可是urllib沒有高級定製功能,可使用urllib2。在urllib中使用最多的是urlopen函數。 緩存
urlopen(str_url,data)訪問一個給定的url,而後返回一個只讀的文件對象t,文件對象t可使用read、readline、readlines、close等方法。t.geturl()返回t的url。在data爲None,而且str_url爲http協議時,urlopen發送一個GET請求,在data不是None時,str_url的協議必須是http,urlopen則發送的是POST請求,data的數據必須是URL編碼形式,通常能夠用urlencode函數處理data數據。 cookie
urlencode(query)以query的url編碼形式返回一個字符串,query能夠是一個由(key/value)數據對組成的序列。這也是urllib用的比較多的函數。
函數
urlretrieve(str_url,filename,data)相似urlopen,可是返回的是一個數據對(f,m),f是一個指定到本地文件系統上的一個文件的路徑,m是mimetools模塊message類的一個實例。filename爲None時,urlretrieve將把提取的數據複製到一個臨時的本地文件中,而f是該臨時文件的本地路徑,若是filename不是None時,將把提取的數據複製到名爲filename的文件中。
ui
urlcleanup()清除urlretrieve函數的緩存。
編碼
urllib2比urllib功能要豐富,urllib2提供了一個和urllib.urlopen()相似的函數也叫urlopen。要想自定義urllib2,則在調用urlopen函數以前,使用build_opener()和install_opener()函數安裝被組合到一個opener的任意數量的處理程序。
url
handler類,這個類能夠用做任何自定義類的超類。
spa
openerdirector類的實例d能夠收集handler類的實例,並綜合使用這些實例打開各類協議的url。一般能夠經過build_opener函數建立實例d,而後調用Install_opener函數安裝該實例。
code
build_opener(handler)建立並返回一個opendirector類的一個實例和給定的參數handler,每一個程序均可以是basehandler類的一個子類,能夠不帶參數進行實例化。
對象
install_opener(opener)安裝opener做爲進一步調用urlopen的打開程序,opener能夠是request類的一個實例
內存
urlopen(str_url,data)行爲和urllib.urlopen一致,不過自定義行爲是經過opener和handler類實現的。
Request類,能夠向urlopen函數傳遞Request類的一個實例,而不是一個url字符串,這樣能夠具體的實例化一個url。 Request(str_url,data,hander),str_url是request類這個實例具體化的一個url,在沒有data和hander的狀況下就和調用urllib2.urlopen(str_url)效果同樣。若是data不爲None,request將對新實例隱式調用其方法add_data(data)。hander必須是一個從首部名稱到首部值的映射。
urllib2.HTTPCookieProcessor(cookiejar)一個管理http cookie的類。默認狀況下使用cookielib.CookieJar對象。
cookielib模塊定義了一個能夠自動加載http cookies。爲存儲和管理cookie提供了客戶端支持。該模塊能夠提供存儲cookie的對象,以便urllib包配合使用。
CookieJar()管理HTTP cookie值,存儲HTTP請求生成的cookie,向傳出的HTTP請求添加cookie對象,整個cookie都存儲在內存中,對cookiejar實例進行回收後cookie的內容也將被回收。
FileCookieJar(filename)建立filecookiejar實例,將cookie存儲到文件中,filename是文件名。