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中cPickle用法例子分享
Jan 03 Python
python抽象基类用法实例分析
Jun 04 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
Pandas标记删除重复记录的方法
Apr 08 Python
Python global全局变量函数详解
Sep 18 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
Jan 18 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 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也可以?成Shell Script
2006/10/09 PHP
PHP提取中文首字母
2008/04/09 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
自定义jQuery选项卡插件实例
2013/03/27 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
javascript history对象详解
2017/02/09 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
详解Vue之父子组件传值
2019/04/01 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
python实现网页链接提取的方法分享
2014/02/25 Python
用Python遍历C盘dll文件的方法
2015/05/06 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
由面试题加深对Django的认识理解
2019/07/19 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
争先创优公开承诺书
2014/08/30 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
MySQL导致索引失效的几种情况
2022/06/25 MySQL