python第三方庫系列之二十四--http-web庫__web

來源:互聯網
上載者:User

共推薦6種庫,強烈推薦requests庫。

web庫之一:httplib庫

#!/usr/bin/env python#coding=utf8import httplibhttpClient = Nonetry:    httpClient = httplib.HTTPConnection('www.baidu.com', 80, timeout=30)    httpClient.request('GET', '/')    #response是HTTPResponse對象    response = httpClient.getresponse()    print response.status    print response.reason    print response.read()except Exception, e:    print efinally:    if httpClient:        httpClient.close()

web庫之二:urllib庫

python更高層的封裝模組中(urllib,urllib2)使用了http實現。

# coding=utf8import urllibbaidu = urllib.urlopen('http://www.baidu.com')print baidu.read()print 'http header:/n', baidu.info()print 'http status:', baidu.getcode()print 'url:', baidu.geturl()for line in baidu: # 就像在操作本地檔案    print line,baidu.close()

web庫之三:urllib2庫--basic and digest authentication, redirections, cookies and more.

#coding:utf-8import urllib import urllib2   url = 'http://www.baidu.com/s'  values = {'wd':'楊彥星'}   data = urllib.urlencode(values)print data url2 = url+'?'+dataresponse = urllib2.urlopen(url2)  the_page = response.read()print the_page
web庫之四: cookielib庫
#coding:utf-8import urllib2,urllibimport cookieliburl = r'http://www.renren.com/ajaxLogin'#建立一個cj的cookie的容器cj = cookielib.CookieJar()opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))#將要POST出去的資料進行編碼data = urllib.urlencode({"email":email,"password":pass})r = opener.open(url,data)print cj

當你看到有cj的時候,說明你已經訪問了登入頁面,是否正常登入你現在還看不出來,可以通過訪問http://www.renren.com/home 來查看

上面的代碼有兩點要說明,我也是看了很長時間才明白

r = opener.open(url,data) 這句,為什麼要使用opener這個對象來open,而不是用utllib2,urlopen?不光是例子裡這麼寫,我們才這麼寫,通過改造我們也可以使用urllib2.urlopen,其實是因為opener是urllib2.bulid_opener創造出來的, 但是你可以這樣理解,他build出來後,自已卻並沒有安裝使用它,也沒有它的屬性與方法,如果想使urllib2也具有opener的屬性與方法,可以先使用urllib2.install_opener(opener)來"安裝"這個opener,安裝完以後就可以使用urllib2來操作了

web庫之五:httplib2庫

1.http.client 是實現了rfc 2616, http 協議的底層庫;

2.urllib.request 建立在http.client之上一個抽象層。 它為訪問http 和 ftp 伺服器提供了一個標準的api,可以自動跟隨http 重新導向, 並且處理了一些常見形式的http 認證;

3.httplib2是一個第三方的開源庫,它比http.client更完整的實現了http協議,同時比urllib.request提供了更好的抽象。

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

httplib2包括這些功能:httplib2緩衝處理,httplib2處理Last-Modified和ETag頭,http2lib 處理壓縮,httplib2 處理重新導向等。

web庫之六:requests庫

官方網址:http://www.python-requests.org/en/latest/



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.