python pycurl模块学习笔记

发布时间:2020-08-08编辑:脚本学堂
有关python pycurl模块的用法,pycurl是curl的一个python版本,pycurl模块的主要参数设定,传参数的例子等。

python 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()