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 相关文章推荐
使用pandas对两个dataframe进行join的实例
Jun 08 Python
pytorch中tensor的合并与截取方法
Jul 26 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
Python异常处理知识点总结
Feb 18 Python
python 自动批量打开网页的示例
Feb 21 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
django使用graphql的实例
Sep 02 Python
深入理解Pytorch微调torchvision模型
Nov 11 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实现查询百度google收录情况(示例代码)
2013/08/02 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
PHP基于yii框架实现生成ICO图标
2015/11/13 PHP
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
python实现用于测试网站访问速率的方法
2015/05/26 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
浅谈Python __init__.py的作用
2020/10/28 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
求职者应聘的自我评价
2013/10/16 职场文书
好人好事事迹材料
2014/02/12 职场文书
火灾现场处置方案
2014/05/28 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
医院合作意向书范本
2015/05/08 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
教师节感想
2015/08/11 职场文书
养成教育主题班会
2015/08/13 职场文书
学习雷锋主题班会
2015/08/14 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python