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函数执行前后增加额外的行为
Oct 20 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
python的等深分箱实例
Nov 22 Python
Python谱减法语音降噪实例
Dec 18 Python
如何通过python实现全排列
Feb 11 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
Nov 28 Python
如何使用pdb进行Python调试
Jun 30 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文件上传(实例)
2013/10/27 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
老生常谈进程线程协程那些事儿
2017/07/24 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
python负载均衡的简单实现方法
2018/02/04 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
财务经理的岗位职责
2013/12/17 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
园林系毕业生求职信
2014/06/23 职场文书
数学教师个人工作总结
2015/02/06 职场文书
材料员岗位职责
2015/02/10 职场文书
求职简历自我评价范文
2015/03/10 职场文书
劳动模范获奖感言
2015/07/31 职场文书
行为规范主题班会
2015/08/13 职场文书
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
基于Python实现nc批量转tif格式
2022/08/14 Python