Python中的CURL PycURL使用例子

在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)

(0)

相关推荐

  • python中pycurl库的用法实例

    本文实例讲述了python中pycurl库的用法,分享给大家供大家参考. 该实例代码实现从指定网址读取网页,主要是pycurl库的使用. 具体实现方法如下: #定义一个类 class CallBack: """ for pycurl """ def __init__(self): """Constructor""" self.data = "" def func(se

  • Python基于PycURL自动处理cookie的方法

    本文实例讲述了Python基于PycURL自动处理cookie的方法.分享给大家供大家参考.具体如下: import pycurl import StringIO url = "http://www.google.com/" crl = pycurl.Curl() crl.setopt(pycurl.VERBOSE,1) crl.setopt(pycurl.FOLLOWLOCATION, 1) crl.setopt(pycurl.MAXREDIRS, 5) crl.fp = Strin

  • Python的pycurl包用法简介

    pycurl是功能强大的python的url包,是用c语言写的,速度很快,比urllib和httplib都快 调用方法: import pycurl c = pycurl.Curl() c.setopt(pycurl.URL, 'http://api.minicloud.com.cn/statuses/public_timeline.xml') import StringIO #这个用到里面的write函数 b = StringIO.StringIO() c.setopt(pycurl.WRIT

  • Python中用pycurl监控http响应时间脚本分享

    最近需要对节点到源站自己做个监控,简单的ping可以检测到一些东西,但是http请求的检查也要进行,于是就研究了下pycurl. pycurl是个用c语言实现的python 库,虽然据说不是那么pythonic,但是却很高效,它支持的协议居多: supporting FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. libcurl supports HTTPS certificates, HTTP POST, HTTP PU

  • Python基于PycURL实现POST的方法

    本文实例讲述了Python基于PycURL实现POST的方法.分享给大家供大家参考.具体如下: import pycurl import StringIO import urllib url = "http://www.google.com/" post_data_dic = {"name":"value"} crl = pycurl.Curl() crl.setopt(pycurl.VERBOSE,1) crl.setopt(pycurl.FO

  • Python中的CURL PycURL使用例子

    在Linux上有个常用的命令 curl(非常好用),支持curl的就是大名鼎鼎的libcurl库:libcurl是功能强大的,而且是非常高效的函数库.libcurl除了提供本身的C API之外,还有多达40种编程语言的Binding,这里介绍的PycURL就是libcurl的Python binding.在Python中对网页进行GET/POST等请求,当需要考虑高性能的时候,libcurl是非常不错的选择,一般来说会比liburl.liburl2快不少,可能也会比Requests的效率更高.特

  • Python中tqdm的使用和例子

    目录 1. tqdm的介绍 1.1 tqdm导入 2. tqdm.tqdm()对可迭代对象进行封装 2.1 语法 2.2 例子 2.3 带有参数的tqdm.tqdm() 2.3.1 例子1 2.3.2 例子2 3. 自定义进度条显示信息 3.1 例子1 3.2 例子2 3.3 两种方法传参注意事项 4. tqdm内置生成可迭代对象方法 —— trange() 5. 自定义方法更新进度 参考 总结 1. tqdm的介绍 有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就

  • 详解python中GPU版本的opencv常用方法介绍

    引言 本篇是以python的视角介绍相关的函数还有自我使用中的一些问题,本想在这篇之前总结一下opencv编译的全过程,但遇到了太多坑,暂时不太想回看做过的笔记,所以这里主要总结python下GPU版本的opencv. 主要函数说明 threshold():二值化,但要指定设定阈值 blendLinear():两幅图片的线形混合 calcHist() createBoxFilter ():创建一个规范化的2D框过滤器 canny边缘检测 createGaussianFilter():创建一个Ga

  • python中cPickle用法例子分享

    在python中,一般可以使用pickle类来进行python对象的序列化,而cPickle提供了一个更快速简单的接口,如python文档所说的:"cPickle -- A faster pickle". cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等.而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复.在cPickle中,主要有四个函数可以做这一工作,下面使用例子来介绍. 1, dump: 将pyt

  • 在python 中split()使用多符号分割的例子

    调用re模块中的split()函数可以用多个符号进行分割 In [1]: import re In [2]: words = '我,来.上海?吃?上海菜' In [3]: wordlist = re.split(',|.|?',words) In [4]: print(wordlist) output: ['我', '来', '上海', '吃', '上海菜'] 以上这篇在python 中split()使用多符号分割的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们

  • 在Python中append以及extend返回None的例子

    Python中,列表是可以进行修改的:赋值.删除元素.分片等等.在给列表添加元素时,有两个常见的方法:append和extend.append在列表的最后添加元素,但是每次只能添加一个元素.extend更像一个连接操作,即用一个列表扩充另一个列表.(依然在末尾位置) 在实现这两个方法时,出现结果为None的情况,如下: list1 = ['a','b'] print(list1.append('c')) print(list1.extend('d')) list2 = list1.append(

  • 在Python中os.fork()产生子进程的例子

    例1 import os print 'Process (%s) start...' %os.getpid() pid = os.fork() if pid==0: print 'I am child (%s) and my father is %s.'%(os.getpid(),os.getppid()) else: print 'I (%s) just created a child process (%s).' %(os.getpid(),pid) 加载os模块后,首先os.fork()函

  • Python 从subprocess运行的子进程中实时获取输出的例子

    有些时候,我们需要将某些程序放到子进程中去运行,以达到整合系统的目的.在Python中,一个非常好的选择就是使用subprocess模块,本模块为开辟子进程去执行子程序提供了统一的接口,更加便于学习和使用. 同时,对于在子进程里的程序,我们希望能够实时获取其输出,以在主进程中打印相关信息,使我们能够了解当前子程序的执行进度.对此,subprocess模块也提供了相应的参数,能够将子程序的标准输出和标准错误输出返回给主程序. 下面,我们就通过一个例子来说明这个功能.首先,我们需要一个用于模拟标准输

  • 在Python中使用filter去除列表中值为假及空字符串的例子

    在 Python中,认为以下值为假: None # None值 False # False值 0 # 数值零不管它是int,float还是complex类型 '',(),[] # 任何一个空的序列 {} # 空的集合 如果一个列表中含上面值为假的元素,要去除的话,可以使用内置函数的filter默认的参数None. 可以先看下filter内置函数的帮助文档 >>> help(filter) Help on built-in function filter in module __built

随机推荐