Python中的CURL PycURL使用例子


Posted in Python onJune 01, 2014

在Linux上有个常用的命令 curl(非常好用),支持curl的就是大名鼎鼎的libcurl库;libcurl是功能强大的,而且是非常高效的函数库。libcurl除了提供本身的C API之外,还有多达40种编程语言的Binding,这里介绍的PycURL就是libcurl的Python binding。
在Python中对网页进行GET/POST等请求,当需要考虑高性能的时候,libcurl是非常不错的选择,一般来说会比liburl、liburl2快不少,可能也会比Requests的效率更高。特别是使用PycURL的多并发请求时,更是效率很高的。个人感觉,其唯一的缺点是,由于是直接调用的是libcurl C库,PycURL的函数接口之类的还和C中的东西很像,可能不是那么的Pythonic,写代码的学习曲线稍微比liburl高一点儿。
还是看个简单的例子吧:

#! /usr/bin/env python
# -*- coding: utf-8 -*-'''
Created on Dec 15, 2013
@author: Jay
'''
import sys
import pycurl
import time
class Test:
    def __init__(self):
        self.contents = ''
    def body_callback(self, buf):
        self.contents = self.contents + buf
sys.stderr.write("Testing %s\n" % pycurl.version)
start_time = time.time()
url = 'http://www.dianping.com/shanghai'
t = Test()
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.WRITEFUNCTION, t.body_callback)
c.perform()
end_time = time.time()
duration = end_time - start_time
print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL)
c.close()
print 'pycurl takes %s seconds to get %s ' % (duration, url)
print 'lenth of the content is %d' % len(t.contents)
#print(t.contents)
Python 相关文章推荐
python循环监控远程端口的方法
Mar 14 Python
详解python发送各类邮件的主要方法
Dec 22 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
python音频处理用到的操作的示例代码
Oct 27 Python
python实现多线程行情抓取工具的方法
Feb 28 Python
python实现list由于numpy array的转换
Apr 04 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
Python编写带选项的命令行程序方法
Aug 13 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
Python命令行参数argv和argparse该如何使用
Feb 08 Python
Python实现多线程下载文件的代码实例
Jun 01 #Python
python使用在线API查询IP对应的地理位置信息实例
Jun 01 #Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
Jun 01 #Python
2款Python内存检测工具介绍和使用方法
Jun 01 #Python
使用Python的Supervisor进行进程监控以及自动启动
May 29 #Python
python应用程序在windows下不出现cmd窗口的办法
May 29 #Python
python正则表达式re模块详细介绍
May 29 #Python
You might like
重置版游戏视频
2020/04/09 魔兽争霸
我用php+mysql写的留言本
2006/10/09 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
javascript+xml技术实现分页浏览
2008/07/27 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
使用JavaScript switch case 另类写法
2010/03/14 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
python搜索包的路径的实现方法
2019/07/19 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
python模块内置属性概念及实例
2021/02/18 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
机械电子工程毕业生自荐信
2013/11/23 职场文书
毕业生的自我评价范文
2013/12/31 职场文书
初三学习计划书范文
2014/04/30 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers