使用httplib模塊來(lái)制作Python下HTTP客戶端的方法
httplib 是 python中http 協(xié)議的客戶端實(shí)現(xiàn),可以使用該模塊來(lái)與 HTTP 服務(wù)器進(jìn)行交互。httplib的內(nèi)容不是很多,也比較簡(jiǎn)單。以下是一個(gè)非常簡(jiǎn)單的例子,使用httplib獲取google首頁(yè)的html:
#coding=gbk
import httplib
conn = httplib.HTTPConnection("www.google.cn")
conn.request('get', '/')
print conn.getresponse().read()
conn.close()
下面詳細(xì)介紹httplib提供的常用類型和方法。
httplib.HTTPConnection ( host [ , port [ , strict [ , timeout ]]] )
HTTPConnection類的構(gòu)造函數(shù),表示一次與服務(wù)器之間的交互,即請(qǐng)求/響應(yīng)。參數(shù)host表示服務(wù)器主機(jī),如:www.csdn.net;port為端口號(hào),默認(rèn)值為80; 參數(shù)strict的 默認(rèn)值為false, 表示在無(wú)法解析服務(wù)器返回的狀態(tài)行時(shí)( status line) (比較典型的狀態(tài)行如: HTTP/1.0 200 OK ),是否拋BadStatusLine 異常;可選參數(shù)timeout 表示超時(shí)時(shí)間。
HTTPConnection提供的方法:
HTTPConnection.request ( method , url [ , body [ , headers ]] )
調(diào)用request 方法會(huì)向服務(wù)器發(fā)送一次請(qǐng)求,method 表示請(qǐng)求的方法,常用有方法有g(shù)et 和post ;url 表示請(qǐng)求的資源的url ;body 表示提交到服務(wù)器的數(shù)據(jù),必須是字符串(如果method 是”post” ,則可以把body 理解為html 表單中的數(shù)據(jù));headers 表示請(qǐng)求的http 頭。
HTTPConnection.getresponse ()
獲取Http 響應(yīng)。返回的對(duì)象是HTTPResponse 的實(shí)例,關(guān)于HTTPResponse 在下面 會(huì)講解。
HTTPConnection.connect ()
連接到Http 服務(wù)器。
HTTPConnection.close ()
關(guān)閉與服務(wù)器的連接。
HTTPConnection.set_debuglevel ( level )
設(shè)置高度的級(jí)別。參數(shù)level 的默認(rèn)值為0 ,表示不輸出任何調(diào)試信息。
httplib.HTTPResponse
HTTPResponse表示服務(wù)器對(duì)客戶端請(qǐng)求的響應(yīng)。往往通過(guò)調(diào)用HTTPConnection.getresponse()來(lái)創(chuàng)建,它有如下方法和屬性:
HTTPResponse.read([amt])
獲取響應(yīng)的消息體。如果請(qǐng)求的是一個(gè)普通的網(wǎng)頁(yè),那么該方法返回的是頁(yè)面的html??蛇x參數(shù)amt表示從響應(yīng)流中讀取指定字節(jié)的數(shù)據(jù)。
HTTPResponse.getheader(name[, default])
獲取響應(yīng)頭。Name表示頭域(header field)名,可選參數(shù)default在頭域名不存在的情況下作為默認(rèn)值返回。
HTTPResponse.getheaders()
以列表的形式返回所有的頭信息。
HTTPResponse.msg
獲取所有的響應(yīng)頭信息。
HTTPResponse.version
獲取服務(wù)器所使用的http協(xié)議版本。11表示http/1.1;10表示http/1.0。
HTTPResponse.status
獲取響應(yīng)的狀態(tài)碼。如:200表示請(qǐng)求成功。
HTTPResponse.reason
返回服務(wù)器處理請(qǐng)求的結(jié)果說(shuō)明。一般為”O(jiān)K”
下面通過(guò)一個(gè)例子來(lái)熟悉HTTPResponse中的方法:
#coding=gbk
import httplib
conn = httplib.HTTPConnection("www.g.cn", 80, False)
conn.request('get', '/', headers = {"Host": "www.google.cn",
"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5",
"Accept": "text/plain"})
res = conn.getresponse()
print 'version:', res.version
print 'reason:', res.reason
print 'status:', res.status
print 'msg:', res.msg
print 'headers:', res.getheaders()
#html
#print '/n' + '-' * 50 + '/n'
#print res.read()
conn.close()
這是我用firebug跟蹤到響應(yīng)頭:

Httplib模塊中還定義了許多常量,如:
Httplib. HTTP_PORT 的值為80,表示默認(rèn)的端口號(hào)為80;
Httplib.OK 的值為200,表示請(qǐng)求成功返回;
Httplib. NOT_FOUND 的值為404,表示請(qǐng)求的資源不存在;
可以通過(guò)httplib.responses 查詢相關(guān)變量的含義,如:
Print httplib.responses[httplib.NOT_FOUND] #not found
- 詳談python http長(zhǎng)連接客戶端
- Python HTTP客戶端自定義Cookie實(shí)現(xiàn)實(shí)例
- 使用基于Python的Tornado框架的HTTP客戶端的教程
- 如何用python實(shí)現(xiàn)一個(gè)HTTP連接池
- Python Http請(qǐng)求json解析庫(kù)用法解析
- python3從網(wǎng)絡(luò)攝像機(jī)解析mjpeg http流的示例
- 基于Python模擬瀏覽器發(fā)送http請(qǐng)求
- Python requests HTTP驗(yàn)證登錄實(shí)現(xiàn)流程
- Python實(shí)現(xiàn)http接口自動(dòng)化測(cè)試的示例代碼
- 詳解用python -m http.server搭一個(gè)簡(jiǎn)易的本地局域網(wǎng)
- python用700行代碼實(shí)現(xiàn)http客戶端
相關(guān)文章
關(guān)于TensorBoard可視化不顯示數(shù)據(jù)問(wèn)題No scalar data was&nbs
這篇文章主要介紹了如何解決TensorBoard可視化不顯示數(shù)據(jù)問(wèn)題No scalar data was found,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Python抓新型冠狀病毒肺炎疫情數(shù)據(jù)并繪制全國(guó)疫情分布的代碼實(shí)例
在本篇文章里小編給大家整理了一篇關(guān)于Python抓新型冠狀病毒肺炎疫情數(shù)據(jù)并繪制全國(guó)疫情分布的代碼實(shí)例,有興趣的朋友們可以學(xué)習(xí)下。2020-02-02
NumPy中np.random.rand函數(shù)的實(shí)現(xiàn)
np.random.rand是NumPy庫(kù)中的一個(gè)函數(shù),用于生成隨機(jī)數(shù),本文主要介紹了NumPy中np.random.rand函數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Python實(shí)現(xiàn)115網(wǎng)盤自動(dòng)下載的方法
這篇文章主要介紹了Python實(shí)現(xiàn)115網(wǎng)盤自動(dòng)下載的方法,可實(shí)現(xiàn)自動(dòng)調(diào)用115客戶端進(jìn)行下載的功能,非常實(shí)用,需要的朋友可以參考下2014-09-09
解決python 自動(dòng)安裝缺少模塊的問(wèn)題
今天小編就為大家分享一篇解決python 自動(dòng)安裝缺少模塊的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Pytorch中torch.argmax()函數(shù)使用及說(shuō)明
這篇文章主要介紹了Pytorch中torch.argmax()函數(shù)使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
python 含子圖的gif生成時(shí)內(nèi)存溢出的方法
今天小編就為大家分享一篇python 含子圖的gif生成時(shí)內(nèi)存溢出的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python編程調(diào)用百度API實(shí)現(xiàn)地理位置經(jīng)緯度坐標(biāo)轉(zhuǎn)換示例
這篇文章主要介紹了Python編程調(diào)用百度API來(lái)實(shí)現(xiàn)地理位置經(jīng)緯度坐標(biāo)轉(zhuǎn)換的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10

