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模拟登陆Tom邮箱示例分享
Jan 13 Python
pyqt4教程之messagebox使用示例分享
Mar 07 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
详解python的数字类型变量与其方法
Nov 20 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
python如何将图片转换素描画
Sep 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
BBS(php & mysql)完整版(一)
2006/10/09 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python break语句详解
2014/03/11 Python
在Python中使用异步Socket编程性能测试
2014/06/25 Python
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
接口中的方法可以是abstract的吗
2015/07/23 面试题
自主招生自荐书
2013/11/29 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
关于迟到的检讨书
2015/05/06 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
红色电影观后感
2015/06/18 职场文书
中学音乐课教学反思
2016/02/18 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
MySQL kill不掉线程的原因
2021/05/07 MySQL
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
Python几种酷炫的进度条的方式
2022/04/11 Python