2024年5月28日发(作者:)
Pycurl的简单使用与对比
在几次莫名其妙的退出之后,我终于有点放弃urllib2,开始尝试其他的模块。
看到很多人推荐wget和pycurl。wget是独立软件,所以就没考虑。pycurl的
话,得益于基于c语言开发的curl性能强劲,使得普遍反映它效率快、稳定性
高、功能强大。于是决定尝试之,简单测试了下(见后面),如果用平均值来比
较的话,pycur所消耗的时间远小于urllib2。这对于爬虫来讲,累积之后变化
就非常可观了。
PycURL 是一个非常快速(参考多并发操作)和丰富完整特性的,但是有点复杂
的接口。如果你需要些简单或纯 Python 的模块,你可以参考一下 urllib2 或
urlgrabber 。通过 / 了解 PycURL 的文档信
息及其其他信息。因为 PycURL 是对 libcurl 的一个封装,使用时还需要参考
libcurl 的文档(针对 C 的)。
pycurl的安装
获取和安装libcurl非常简单,取决于您所运行的Linux版本,如果你也使用
ubuntu,那只需要使用ap-get就可以轻松安装。
$ sudo apt-get libcurl3
$ sudo apt-get python-pycurl
如果想查看下系统内pycurl版本信息可以:
1 >>> import pycurl
2 >>> n
3 'libcurl/7.19.7 GnuTLS/2.8.5 zlib/1.2.3.3 libidn/1.15'
如上所示,我的系统里的libcurl是7.19.7的最新版本。
pycurl的使用:
() -> Curl object
这个函数创建一个同 libcurl中的CURL处理器相对应的Curl对象.Curl对象自
动的设置CURLOPT_VERBOSE为0, CURLOPT_NOPROGRESS为1,提供一个默认的
CURLOPT_USERAGENT和设置CURLOPT_ERRORBUFFER指向一个私 有的错误缓冲区.
lti() -> CurlMulti object
这个函数创建一个新的与libcurl中的CURLM处理器相 对应的CurlMulti对象.
are() -> CurlShare object
这个函数创建一个新的与libcurl中的CURLSH处理器 相对应的CurlShare对
象.CurlShare对 象可以在Curl对象上传递SHARE选项参数. [待续]
其中:
Curl对象具有以下方法:
close() -> None 对应的是 libcurl中的curl_easy_cleanup方法.当Curl对
象不再被引用时pycurl会自动调用这个方法,但也可直接地调用这个方法.
perform() -> None 对应于libcurl中的curl_easy_perform方法.
setopt(option, value) -> None 对应于libcurl中的curl_easy_setopt方法,
option使用libcurl中的CURLOPT_*常量来指定,只可惜CURLOPT_前缀现在已经
被去掉了.value的数据类型依赖于 option,它可以是一个字符串,整型,长整型,
文件对象,列表或是函数.
Example usage:
import pycurl
c = ()
(, "/")
(ADER, ["Accept:"])
import StringIO
b = IO()
(UNCTION, )
(LOCATION, 1)
(IRS, 5)
发布评论