共推薦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/