這篇文章主要介紹了Python的pycurl包用法簡介,文中羅列了其下模塊中的一些常用方法,需要的朋友可以參考下
pycurl是功能強大的python的url包,是用c語言寫的,速度很快,比urllib和httplib都快
調用方法:
- import pycurl
- c = pycurl.Curl()
- c.setopt(pycurl.URL, 'http://api.minicloud.com.cn/statuses/public_timeline.xml')
- import StringIO #這個用到里面的write函數
- b = StringIO.StringIO()
- c.setopt(pycurl.WRITEFUNCTION, b.write) #把StringIO的寫函數注冊到pycurl的WRITEFUNCTION中,即pycurl所有獲取的內容都寫入到StringIO中,如果沒有這一句,pycurl就會把所有的內容在默認的輸出器中輸出
- c.perform()
- print b.getvalue()
這里有一個小例子,用來獲取微博上流行的短地址對應的真實地址的
- import StringIO
- import pycurl
- c = pycurl.Curl()
- str = StringIO.StringIO()
- c.setopt(pycurl.URL, "http://t.cn/aKln8T")
- c.setopt(pycurl.WRITEFUNCTION, str.write)
- c.setopt(pycurl.FOLLOWLOCATION, 1)
- c.perform()
- print c.getinfo(pycurl.EFFECTIVE_URL)
可見pycurl是十分強大和簡潔的,只是要熟悉它的很多屬性,下面來看一些常用的:
pycurl.Curl() #創建一個pycurl對象的方法
pycurl.Curl(pycurl.URL, http://www.google.com.hk) #設置要訪問的URL
pycurl.Curl().setopt(pycurl.MAXREDIRS, 5) #設置最大重定向次數
pycurl.Curl().setopt(pycurl.CONNECTTIMEOUT, 60)
pycurl.Curl().setopt(pycurl.TIMEOUT, 300) #連接超時設置
pycurl.Curl().setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)") #模擬瀏覽器
pycurl.Curl().perform() #服務器端返回的信息
pycurl.Curl().getinfo(pycurl.HTTP_CODE) #查看HTTP的狀態 類似urllib中status屬性
pycurl.NAMELOOKUP_TIME 域名解析時間
pycurl.CONNECT_TIME 遠程服務器連接時間
pycurl.PRETRANSFER_TIME 連接上后到開始傳輸時的時間
pycurl.STARTTRANSFER_TIME 接收到第一個字節的時間
pycurl.TOTAL_TIME 上一請求總的時間
pycurl.REDIRECT_TIME 如果存在轉向的話,花費的時間
pycurl.EFFECTIVE_URL
pycurl.HTTP_CODE HTTP 響應代碼
pycurl.REDIRECT_COUNT 重定向的次數
pycurl.SIZE_UPLOAD 上傳的數據大小
pycurl.SIZE_DOWNLOAD 下載的數據大小
pycurl.SPEED_UPLOAD 上傳速度
pycurl.HEADER_SIZE 頭部大小
pycurl.REQUEST_SIZE 請求大小
pycurl.CONTENT_LENGTH_DOWNLOAD 下載內容長度
pycurl.CONTENT_LENGTH_UPLOAD 上傳內容長度
pycurl.CONTENT_TYPE 內容的類型
pycurl.RESPONSE_CODE 響應代碼
pycurl.SPEED_DOWNLOAD 下載速度
pycurl.SSL_VERIFYRESULT
pycurl.INFO_FILETIME 文件的時間信息
pycurl.HTTP_CONNECTCODE HTTP 連接代碼
pycurl.HTTPAUTH_AVAIL
pycurl.PROXYAUTH_AVAIL
pycurl.OS_ERRNO
pycurl.NUM_CONNECTS
pycurl.SSL_ENGINES
pycurl.INFO_COOKIELIST
pycurl.LASTSOCKET
pycurl.FTP_ENTRY_PATH
新聞熱點
疑難解答