Python--urllib3庫詳解1

Python--urllib3庫詳解1html


 

   Urllib3是一個功能強大,條理清晰,用於HTTP客戶端的Python庫,許多Python的原生系統已經開始使用urllib3Urllib3提供了不少python標準庫裏所沒有的重要特性:python

               一、 線程安全git

          二、 鏈接池github

          三、 客戶端SSL/TLS驗證瀏覽器

          四、 文件分部編碼上傳安全

          五、 協助處理重複請求和HTTP重定位測試

          六、 支持壓縮編碼編碼

          七、 支持HTTPSOCKS代理url

          八、 100%測試覆蓋率spa

   Urllib3功能很是強大,可是用起來卻十分簡單:

          

安裝:

  Urllib3 能經過pip來安裝:

         $pip install urllib3

  你也能夠在github上下載最新的源碼,解壓以後進行安裝:

         $git clone git://github.com/shazow/urllib3.git

         $python setup.py install

urllib3的使用:

   生成請求(request):

   首先,你必須導入urllib3模塊:

         

   而後你須要一個PoolManager實例來生成請求,由該實例對象處理與線程池的鏈接以及線程安全的全部細節,不須要任何人爲操做:

          

   經過request()方法建立一個請求:

          

   request()方法返回一個HTTPResponse對象。

   你還能夠經過request()方法向請求(request)中添加一些其餘信息,如:

          

   請求(request)中的數據項(request data)可包括:

   Headers:

   在request()方法中,能夠定義一個字典類型(dictionary),並做爲headers參數傳入:

          

   Query parameters:

   對於GETHEADDELETE請求,能夠簡單的經過定義一個字典類型做爲fields參數傳入便可:

          

   對於POSTPUT請求(request),須要手動對傳入數據進行編碼,而後加在URL以後:

          

   Form data:

   對於PUTPOST請求(request),urllib3會自動將字典類型的field參數編碼成表格類型.

   JSON:

   在發起請求時,能夠經過定義body 參數並定義headersContent-Type參數來發送一個已通過編譯的JSON數據:

          

   Files & binary data:

   使用multipart/form-data編碼方式上傳文件,可使用和傳入Form data數據同樣的方法進行,並將文件定義爲一個元組的形式     (file_name,file_data):

          

   文件名(filename)的定義不是嚴格要求的,可是推薦使用,以使得表現得更像瀏覽器。同時,還能夠向元組中再增長一個數據來定義文件的 MIME類型:

          

   若是是發送原始二進制數據,只要將其定義爲body參數便可。同時,建議對headerContent-Type參數進行設置:

          

   Timeout :

   使用timeout,能夠控制請求的運行時間。在一些簡單的應用中,能夠將timeout參數設置爲一個浮點數:

          

   要進行更精細的控制,可使用Timeout實例,將鏈接的timeout和讀的timeout分開設置:

          

   若是想讓全部的request都遵循一個timeout,能夠將timeout參數定義在PoolManager中:

          

   或者

          

   當在具體的request中再次定義timeout時,會覆蓋PoolManager層面上的timeout

   請求重試(retrying requests):

   Urllib3 能夠自動重試冪等請求,原理和handles redirect同樣。能夠經過設置retries參數對重試進行控制。Urllib3默認進行3次請求重  試,並進行3次方向改變。

   給retries參數定義一個整型來改變請求重試的次數:

          

   關閉請求重試(retrying request)及重定向(redirect)只要將retries定義爲False便可:

          

   關閉重定向(redirect)但保持重試(retrying request),redirect參數定義爲False便可:

          

   要進行更精細的控制,可使用retry實例,經過該實例能夠對請求的重試進行更精細的控制。

   例如,進行3次請求重試,可是隻進行2次重定向:

          

   若是想讓全部請求都遵循一個retry策略,能夠在PoolManager中定義retry參數:

          

   或者

         

   當在具體的request中再次定義retry時,會覆蓋 PoolManager層面上的retry。

 

本文參考自:urllib3

相關文章
相關標籤/搜索