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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
python获取mp3文件信息的方法
Jun 15 Python
Python中对象迭代与反迭代的技巧总结
Sep 17 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
Django 开发环境配置过程详解
Jul 18 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
python 初始化一个定长的数组实例
Dec 02 Python
Python进行统计建模
Aug 10 Python
Python 中如何写注释
Aug 28 Python
python装饰器代码解析
Mar 23 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
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
基于datagrid框架的查询
2013/04/08 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
python dict remove数组删除(del,pop)
2013/03/24 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
python Tkinter版学生管理系统
2019/02/20 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
文体活动总结范文
2014/05/05 职场文书
个人欠款担保书
2014/05/20 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
班主任寄语2015
2015/02/26 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书