程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 使用httplib模塊來制作Python下HTTP客戶端的方法

使用httplib模塊來制作Python下HTTP客戶端的方法

編輯:更多關於編程

       這篇文章主要介紹了使用httplib模塊來制作Python下HTTP客戶端的方法,文中列舉了一些httplib下常用的HTTP方法,需要的朋友可以參考下

      httplib 是 python中http 協議的客戶端實現,可以使用該模塊來與 HTTP 服務器進行交互。httplib的內容不是很多,也比較簡單。以下是一個非常簡單的例子,使用httplib獲取google首頁的html:

      ?

    1 2 3 4 5 6 #coding=gbk import httplib conn = httplib.HTTPConnection("www.google.cn") conn.request('get', '/') print conn.getresponse().read() conn.close()

      下面詳細介紹httplib提供的常用類型和方法。

      httplib.HTTPConnection ( host [ , port [ , strict [ , timeout ]]] )

      HTTPConnection類的構造函數,表示一次與服務器之間的交互,即請求/響應。參數host表示服務器主機,如:www.csdn.net;port為端口號,默認值為80; 參數strict的 默認值為false, 表示在無法解析服務器返回的狀態行時( status line) (比較典型的狀態行如: HTTP/1.0 200 OK ),是否拋BadStatusLine 異常;可選參數timeout 表示超時時間。

      HTTPConnection提供的方法:

      HTTPConnection.request ( method , url [ , body [ , headers ]] )

      調用request 方法會向服務器發送一次請求,method 表示請求的方法,常用有方法有get 和post ;url 表示請求的資源的url ;body 表示提交到服務器的數據,必須是字符串(如果method 是”post” ,則可以把body 理解為html 表單中的數據);headers 表示請求的http 頭。

      HTTPConnection.getresponse ()

      獲取Http 響應。返回的對象是HTTPResponse 的實例,關於HTTPResponse 在下面 會講解。

      HTTPConnection.connect ()

      連接到Http 服務器。

      HTTPConnection.close ()

      關閉與服務器的連接。

      HTTPConnection.set_debuglevel ( level )

      設置高度的級別。參數level 的默認值為0 ,表示不輸出任何調試信息。

      httplib.HTTPResponse

      HTTPResponse表示服務器對客戶端請求的響應。往往通過調用HTTPConnection.getresponse()來創建,它有如下方法和屬性:

      HTTPResponse.read([amt])

      獲取響應的消息體。如果請求的是一個普通的網頁,那麼該方法返回的是頁面的html。可選參數amt表示從響應流中讀取指定字節的數據。

      HTTPResponse.getheader(name[, default])

      獲取響應頭。Name表示頭域(header field)名,可選參數default在頭域名不存在的情況下作為默認值返回。

      HTTPResponse.getheaders()

      以列表的形式返回所有的頭信息。

      HTTPResponse.msg

      獲取所有的響應頭信息。

      HTTPResponse.version

      獲取服務器所使用的http協議版本。11表示http/1.1;10表示http/1.0。

      HTTPResponse.status

      獲取響應的狀態碼。如:200表示請求成功。

      HTTPResponse.reason

      返回服務器處理請求的結果說明。一般為”OK”

      下面通過一個例子來熟悉HTTPResponse中的方法:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #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跟蹤到響應頭:

    201561990053721.jpg (369×322)

      Httplib模塊中還定義了許多常量,如:

      Httplib. HTTP_PORT 的值為80,表示默認的端口號為80;

      Httplib.OK 的值為200,表示請求成功返回;

      Httplib. NOT_FOUND 的值為404,表示請求的資源不存在;

      可以通過httplib.responses 查詢相關變量的含義,如:

      Print httplib.responses[httplib.NOT_FOUND] #not found

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved