Python – 熟悉httplib2

來源:互聯網
上載者:User

為什麼用HttpLib2呢?

比起HttpLib多出什麼呢?

1.支援HTTP和HTTPS,當然在這裡和httplib是一樣的。

兩者的文檔都這樣指出“Note HTTPS support is only available if the
socket module was compiled with SSL support.”

是的,要依賴於編譯選項

2.支援HTTP 1.1的 Keep-Alive特性,能夠在同一個socket串連裡使用並發的httprequest.

3.支援授權

support following :

-Basic

-Digest

-WSSE

-HMAC Digest

-Google Account Authentication

當然我覺得Basic和Digest就OK了,如果覺得保密性不夠,那最好用HTTPS,這個防火牆也無法根據內容過濾。最近報道說HTTPS也被破解了。不知是怎麼破解的?=,=

4.支援Cache

是的,緩衝是很多機制都必有的功能,如果http的庫沒有包含http本身支援的緩衝就太可惜了。

如下就能擷取帶有緩衝的HTTP對象h,緩衝則儲存在當前環境的“.cache"目錄下,夠簡單吧:)

import httplib2
h = httplib2.Http(".cache")

5.提供所有HTTP支援的方法,不只是GET和POST,還包括DELETE,CONNECT吧

6.自動通過”GET“方法,重新導向3XX傳回值

7.支援deflate和gzip兩種資源壓縮格式



那我們簡單看一下怎麼使用吧:

範例1:

import httplib2#擷取HTTP對象h = httplib2.Http()#發出同步請求,並擷取內容resp, content = h.request("http://www.soso.com/")print respprint content

print resp會現實返回頭資訊

print content 會顯示”搜搜更懂你“相關內容。

範例2:

帶有Cache功能的請求:

h2 = httplib2.Http('.cache')resp2,content2 = h2.request('http://www.baidu.com/')print resp2print content2

你就會得到”百度一下,你就知道“相關內容。

並且我們可以再".cache"目錄下找到剛才訪問的相關內容檔案”www.baidu.com,,f03f5717616221de41881be555473a02“,是baidu.com的快取檔案,用記事本開啟可知裡面帶偶內容和httprespond頭資訊。

怎麼驗證是否真正cache住了呢?

當然用baidu這個網頁測試時,WireShark所捕捉的結果,每次都會有http請求,仔細分析看,返回的Expire資訊是目前時間,即立即失效。

但當用”www.163.com“測試時,他的到期時間稍微長一些,大概5分鐘吧。所以連續兩次請求時,無法通過wireshark活的第二次請求內容,直接返回了cahce資訊。

Http.request方法如下:

Http.request(uri[, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None])

method預設是"GET",並且能指定其他header和最大重新導向次數(上面說過httplib2支援自動重新導向,但不能無限重新導向啊,預設是5)


此外,可以通過add_credentials方法來增加授權使用者名和密碼,httplib2自動會通過解析repond,並處理HTTP
401 challenge。

Http.add_credentials(name, password[, domain=None])


範例3:
當然,你可以嘗試一下是否支援HTTPS,我們的範例當然是google.com了。


h3 = httplib2.Http(".cache")h3.add_credentials('name', 'password')resp3, content3 = h3.request("https://www.google.com",    "GET",headers={'content-type':'text/plain'} )print resp3print content3

可以通過add_credentials增加ssl的認證資訊。

這裡即可得到google.hk的網頁資訊,可見被重新導向了。

then how to deal with cookie?

there is one simple solutin : http://www.testingreflections.com/node/view/5919

其他詳見:http://httplib2.googlecode.com/hg/doc/html/index.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.