pycurl的学习

(2013-09-26 10:40:31)

  分类: python

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

具体代码如下:

  1. Import  pycurl
  2. Import StringIO
  3. checkurl="www.test.com/abc?afgf=afd
  4. "
  5. b=StringIO.StringIO()
  6. c=pycurl.Curl()
  7. c.setopt(pycurl.URL, checkurl)
  8. c.setopt(pycurl.HTTPHEADER, ["Accept:"])
  9. c.setopt(pycurl.WRITEFUNCTION, b.write)
  10. c.setopt(pycurl.FOLLOWLOCATION, 1)
  11. c.setopt(pycurl.MAXREDIRS, 5)
  12. c.perform()
  13. Print b.getvalue()
  14. Print c.getinfo(c.HTTP_CODE)
  15. b.close()
  16. c.close()

传参数的例子

  1. b = StringIO.StringIO()
  2. c = pycurl.Curl()
  3. mkdir_str = '[{"op":"MKDIRS","permission"=permission}]'
  4. mkdir_url="http://192.168.0.112/abdf?op=MKDIRS&permission=%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()
  15. b.close()

本文出自 “一直奔跑在路上” 博客,请务必保留此出处http://liran728729.blog.51cto.com/2505117/1151734

最新文章

  1. 实体之间的关系【Entity Relationships】(EF基础系列篇9)
  2. dlmalloc(Android bionic C库的malloc实现)简介
  3. 黑马程序员_JAVA基础知识总结2
  4. 免费的SqlServer优化辅助工具:SqlOptimize (原创)
  5. 2015第15周日PostgreSQL学习
  6. 点滴记录——Centos 6.5 yum安装Ganglia
  7. JQuery日记6.9 Promise/A之Callbacks
  8. ArrayList源码学习
  9. ***远程连接MYSQL提示1130 - Host is not allowed to connect to this MySQL server
  10. oracle数据库默认是10次尝试失败后锁住用户
  11. docker时间和本地时间不一致的问题
  12. python学习第24天
  13. 浅谈 Nginx 的内部核心架构设计
  14. Hadoop序列化-流量汇总案例
  15. 27.纯 CSS 创作一个精彩的彩虹 loading 特效
  16. bin/hdfs dfs命令存在WARN util.NativeCodeLoader问题消除方法
  17. Jmeter之正则
  18. FastAdmin 插件刷新缓存出现 200 红色提示框解决 always_populate_raw_post_data
  19. Haskell语言学习笔记(27)Endo, Dual, Foldable
  20. navicat for mysql怎么注册?navicat11全系列破解教程(附注册码)

热门文章

  1. java.lang.Void and void
  2. java FileI(O)nputStream为什么比BufferedI(O)utputStream慢?
  3. LoadRunner中运行场景时提示"You do not have a license for this Vuser type."
  4. 基于skitter的轮播图炫酷效果,幻灯片的体验
  5. Linux 内核源码情景分析 chap 2 存储管理 (四)
  6. cxf利用接口规范写法发布webservice
  7. 多对多关系数据库表 java描述
  8. vsCode 添加浏览器调试和js调试的方法总结
  9. C#:加载Excel(待补充)
  10. 嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得