Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5119542
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Python/Ruby

2013-10-10 15:45:41

pycurl是curl的一个python版本。

 

pycurl的使用说明:

pycurl的使用主要是一些参数的设定。
c = pycurl.Curl()

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

具体举例:

环境:限制需要访问地址

具体代码如下:


  1. import pycurl
  2. import StringIO
  3. checkurl=" "
  4. b=StringIO.StringIO()
  5. c=pycurl.Curl()
  6. c.setopt(pycurl.URL, checkurl)
  7. c.setopt(pycurl.HTTPHEADER, ["Accept:"])
  8. c.setopt(pycurl.WRITEFUNCTION, b.write)
  9. c.setopt(pycurl.FOLLOWLOCATION, 1)
  10. c.setopt(pycurl.MAXREDIRS, 5)
  11. c.perform()
  12. print b.getvalue()
  13. print c.getinfo(c.HTTP_CODE)
  14. b.close()
  15. c.close()

传参数的例子

  1. b = StringIO.StringIO()
  2. c = pycurl.Curl()
  3. mkdir_str = '[{"op":"MKDIRS","permission"=permission}]'
  4. mkdir_url="%s" % (self.url_path,path,permission)
  5. c.setopt(pycurl.URL, mkdir_url)
  6. c.setopt(pycurl.HTTPHEADER,['Content-Type:application/json','Content-Length: '+str(len(mkdir_str))])
  7. c.setopt(pycurl.CUSTOMREQUEST,"PUT")
  8. c.setopt(pycurl.POSTFIELDS,mkdir_str)
  9. c.setopt(pycurl.WRITEFUNCTION, b.write)
  10. c.setopt(pycurl.FOLLOWLOCATION, 1)
  11. c.setopt(pycurl.MAXREDIRS, 5)
  12. c.perform()
  13. status = c.getinfo(c.HTTP_CODE)
  14. bbody = b.getvalue() b.close()



阅读(1853) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~