简单谈谈Python的pycurl模块


Posted in Python onApril 07, 2018

pycurl是一个用c语言编写的libcurl Python实现,功能非常强大,支持操作协议有FTP,HTTP,HTTPS,TELNET等。

模块的常用方法说明:

close()方法,对应libcurl包中的curl_easy_cleanup方法,无参数,实现关闭、回收Curl对象。
·perform()方法,对应libcurl包中的curl_easy_perform方法,无参数,实现Curl对象请求的提交。
·setopt(option,value)方法,对应libcurl包中的curl_easy_setopt方法,参数option是通过libcurl的常量来指定的.参数value的值会依赖option,可以是一个字符串、整型、长整型、文件对象、列表或函数等

pycurl.Curl()    #创建一个curl对象
c.setopt(pycurl.CONNECTTIMEOUT,5)    #连接的等待时间,设置为0则不等待
c.setopt(pycurl.TIMEOUT,5)    #请求超时时间
c.setopt(pycurl.NOPROGRESS,0)    #是否屏蔽下载进度条,非0则屏蔽
c.setopt(pycurl.MAXREDIRS,5)    #指定HTTP重定向的最大数
c.setopt(pycurl.FORBID_REUSE,1)    #完成交互后强制断开连接,不重用
c.setopt(pycurl.FRESH_CONNECT,1)    #强制获取新的连接,即替代缓存中的连接
c.setopt(pycurl.DNS_CACHE_TIMEOUT,60)    #设置保存DNS信息的时间,默认为120秒
c.setopt(pycurl.URL,"http://www.baidu.com")    #指定请求的URL
c.setopt(pycurl.USERAGENT,"Mozilla/5.2(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50324)")#配置请求HTTP头的User-Agent
c.setopt(pycurl.HEADERFUNCTION,getheader)    #将返回的HTTPHEADER定向到回调函数getheader
c.setopt(pycurl.WRITEFUNCTION,getbody)    #将返回的内容定向到回调函数getbody
c.setopt(pycurl.WRITEHEADER,fileobj)    #将返回的HTTPHEADER定向到fileobj文件对象
c.setopt(pycurl.WRITEDATA,fileobj)    #将返回的HTML内容定向到fileobj文件对象

·getinfo(option)方法,对应libcurl包中的curl_easy_getinfo方法,参数option是通过libcurl的常量来指定的

c=pycurl.Curl()    #创建一个curl对象
c.getinfo(pycurl.HTTP_CODE)    #返回的HTTP状态码
c.getinfo(pycurl.TOTAL_TIME)    #传输结束所消耗的总时间
c.getinfo(pycurl.NAMELOOKUP_TIME)    #DNS解析所消耗的时间
c.getinfo(pycurl.CONNECT_TIME)    #建立连接所消耗的时间
c.getinfo(pycurl.PRETRANSFER_TIME)    #从建立连接到准备传输所消耗的时间
c.getinfo(pycurl.STARTTRANSFER_TIME)    #从建立连接到传输开始消耗的时间
c.getinfo(pycurl.REDIRECT_TIME)    #重定向所消耗的时间
c.getinfo(pycurl.SIZE_UPLOAD)    #上传数据包大小
c.getinfo(pycurl.SIZE_DOWNLOAD)    #下载数据包大小
c.getinfo(pycurl.SPEED_DOWNLOAD)    #平均下载速度
c.getinfo(pycurl.SPEED_UPLOAD)    #平均上传速度
c.getinfo(pycurl.HEADER_SIZE)    #HTTP头部大小

Python 相关文章推荐
Python入门篇之函数
Oct 20 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
浅谈Python处理PDF的方法
Nov 10 Python
Django中的Signal代码详解
Feb 05 Python
python实现俄罗斯方块游戏
Mar 25 Python
python实现屏保计时器的示例代码
Aug 08 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
Python csv文件记录流程代码解析
Jul 16 Python
Python 实现PS滤镜的旋涡特效
Dec 03 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
python爬取豆瓣电影TOP250数据
May 23 Python
Pygame Time时间控制的具体使用详解
Nov 17 Python
VSCode下好用的Python插件及配置
Apr 06 #Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 #Python
在VS Code上搭建Python开发环境的方法
Apr 06 #Python
python装饰器深入学习
Apr 06 #Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 #Python
python中pylint使用方法(pylint代码检查)
Apr 06 #Python
VSCode下配置python调试运行环境的方法
Apr 06 #Python
You might like
php合并数组中相同元素的方法
2014/11/13 PHP
CI框架常用方法小结
2016/05/17 PHP
php自动载入类用法实例分析
2016/06/24 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
Convert Seconds To Hours
2007/06/16 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
js数据类型检测总结
2018/08/05 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
js实现简单点赞操作
2020/03/17 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
python 如何快速复制序列
2020/09/07 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
办公自动化专业大学生职业规划书
2014/03/06 职场文书
物理教育专业求职信
2014/06/25 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫
带你了解Java中的ForkJoin
2022/04/28 Java/Android