標籤:
pycurl的學習 (2013-09-26 10:40:31)
轉載▼
pycurl的使用
pycurl是curl的一個python版本。
pycurl的使用說明:
pycurl的使用主要是一些參數的設定。
1,c.setopt(pycurl.URL,myurl)
設定連結的地址
2,c.setopt(pycurl.HTTPHEADER,[‘Content-Type: application/json‘,‘Content-Length: ‘+str(len(remove_str))])
設定http的包頭資訊。注意,長度的字元傳是用於put或者post等方法傳參數的。
3,c.setopt(pycurl.CUSTOMREQUEST,"DELETE")
設定封裝方法,有put,post,get,delete等多種方法
4, c.setopt(pycurl.POSTFIELDS,remove_str)
設定psot過去的資料,注意是一個字典樣式的字串
5,c.setopt(pycurl.WRITEFUNCTION,b.write)
c.setopt(pycurl.FOLLOWLOCATION, 1)
設定寫的回調,所有輸出都定向到b.write中。
6,c.setopt(pycurl.MAXDEDIRS,5)
設定重新導向次數
7,c.setopt(pycurl.CONNECTTIMEOUT,60)
c.setopt(pycurl.TIMEOUT,600)
設定連結逾時,設定下載逾時
8,c.setopt(pycurl.USERAGENT,"xxxx")
設定代理瀏覽器
9,c.setopt(pycurl.HEADER,1)
開啟包頭輸出
c.setopt(pycurl.HEADERFUNCTION,header_str.write)
將包頭輸出到header_str.write流中
10,c.perform()
執行curl命令
11,print b.getvalue()列印訊息
12,print c.getinfo(c.HTTP_CODE) //答應傳回值
Print c.getinfo(c.CONTENT_TYPE) //列印文本類型
Print c.getinfo(c.EFFECTIVE_URL) //列印重新導向URL
具體舉例:
環境:限制需要訪問地址
www.test.com/abc?afgf=afd
具體代碼如下:
- Import pycurl
- Import StringIO
-
- checkurl="www.test.com/abc?afgf=afd
- "
- b=StringIO.StringIO()
- c=pycurl.Curl()
- c.setopt(pycurl.URL, checkurl)
- c.setopt(pycurl.HTTPHEADER, ["Accept:"])
- c.setopt(pycurl.WRITEFUNCTION, b.write)
- c.setopt(pycurl.FOLLOWLOCATION, 1)
- c.setopt(pycurl.MAXREDIRS, 5)
- c.perform()
- Print b.getvalue()
- Print c.getinfo(c.HTTP_CODE)
- b.close()
- c.close()
傳參數的例子
- b = StringIO.StringIO()
- c = pycurl.Curl()
- mkdir_str = ‘[{"op":"MKDIRS","permission"=permission}]‘
- mkdir_url="http://192.168.0.112/abdf?op=MKDIRS&permission=%s" % (self.url_path,path,permission)
- c.setopt(pycurl.URL, mkdir_url)
- c.setopt(pycurl.HTTPHEADER,[‘Content-Type:application/json‘,‘Content-Length: ‘+str(len(mkdir_str))])
- c.setopt(pycurl.CUSTOMREQUEST,"PUT")
- c.setopt(pycurl.POSTFIELDS,mkdir_str)
-
- c.setopt(pycurl.WRITEFUNCTION, b.write)
- c.setopt(pycurl.FOLLOWLOCATION, 1)
- c.setopt(pycurl.MAXREDIRS, 5)
- c.perform()
- status = c.getinfo(c.HTTP_CODE)
- bbody = b.getvalue()
- b.close()
本文出自 “一直奔跑在路上” 部落格,請務必保留此出處http://liran728729.blog.51cto.com/2505117/1151734
Python pycurl使用