python庫(4)—— urllib2

一、urllib2是Python的一個獲取URLs(Uniform Resource Locators)的組件。他以urlopen函數的形式提供了一個很是簡單的接口,這是具備利用不一樣協議獲取URLs的能力;它一樣提供了一個比較複雜的接口來處理通常狀況,例如:基礎驗證,cookies,代理和其餘,它們經過handlers和openers的對象提供。python

二、urllib2.urlopen(url, data=None, timeout=None)
  參數
    url:打開一個url,能夠是字符串(如同urllib.urlopen的url參數),或是一個Request對象(這是special的地方)
    data:向服務器傳送的額外數據,僅http請求會用到這個參數。當data不爲None時,說明此Http請求是Post,而不是Get。這個參數與urllib2.Request類的構造函數的data參數相同,詳見urllib2.Request。通常不會設定這個參數,須要時會在urllib2.Request的構造函數處設置
    timeout:設置超時的時間,類型是整型,單位是秒;若是超過指定時間仍未獲得所請求服務器的響應(例如因爲網絡環境差等緣由),則拋出異常,而不會無限制等待。適用於HTTP, HTTPS, FTP, FTPS
  返回值
    返回一個相似於文件描述符號(file-like)的對象,與urllib.urlopen的返回值相同,經過返回值也可使用geturl()和info()。瀏覽器

三、urllib2.Request類,通常使用方法是使用其構造函數獲得一個Request對象:class urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])
  表示一個URL請求
  參數
    url:一個URL字符串
    data:向服務器傳送的額外數據,僅http請求會用到這個參數。當data不爲None時,說明此Http請求是Post,而不是Get。其類型應爲字符串,通常使用urllib.urlencode()對一個dict或tuple進行處理,獲得該字符串。
    headers:請求頭,類型是dict。除此以外,請求頭能夠在建立完Request對象後,經過該對象調用add_header(key, val)添加到對象中。經常使用方法是添加User-Agent請求頭,冒充瀏覽器請求,用於哄篇服務器,由於一些服務器不容許程序訪問。
    後兩個參數通常用不到,再也不介紹
  返回值
    一個Request對象服務器

四、urllib2.OpenerDirector類
  當你獲取一個URL時,你須要使用一個opener(OpenerDirector)。正常狀況下咱們一直使用默認的opener,被urlopen使用,但你也能夠建立自定義的openers。opener使用handler處理任務,全部的重活都交給這些handlers來作。每個handler知道怎麼以特定的url協議打開url,或者怎麼處理打開url的某些方面,如,HTTP重定向,或者HTTP cookie。cookie

五、def urllib2.build_opener([handler, ...])
  建立一個OpenerDirector對象,能夠包含多個handlers
  參數
    handler, ...:urllib2提供不少handler來處理不一樣的請求,經常使用的HTTPHandler,FTPHandler都比較好理解。這裏提一下HTTPCookieProcessor,HTTPCookieProcessor是處理cookie的,在不少須要身份驗證的請求中cookie是必不可少的,python中對cookie的操做是由cookielib模塊來完成的,而這個handler只是調用了其方法,在request和response過程當中將cookie加到請求中和把cookie從響應中解析出來。
  返回值
    OpenerDirector對象網絡

六、def urllib2.install_opener(opener)
  install_opener能設置一個全局opener對象,這意味着調用urlopen將會都用你剛安裝的opener。
  參數
    opener:OpenerDirector對象函數

七、urllib2.HTTPCookieProcessor類,一般使用其構造函數獲得一個對象,即一個handler:class urllib2.HTTPCookieProcessor([cookiejar])
  參數
    cookiejar:一個cookielib.CookieJar對象,經過構造函數cookielib.CookieJar()獲得
  返回值
    HTTPCookieProcessor對象,即一個handlerui

相關文章
相關標籤/搜索