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.writefunction, b.write) #把stringio的写函数注册到pycurl的writefunction中,即pycurl所有获取的内容都写入到stringio中,如果没有这一句,pycurl就会把所有的内容在默认的输出器中输出
c.perform()
print b.getvalue()

这里有一个小例子,用来获取微博上流行的短地址对应的真实地址的

import stringio
import pycurl
c = pycurl.curl()
str = stringio.stringio()
c.setopt(pycurl.url, “http://t.cn/akln8t”)
c.setopt(pycurl.writefunction, str.write)
c.setopt(pycurl.followlocation, 1)
c.perform()
print c.getinfo(pycurl.effective_url)

可见pycurl是十分强大和简洁的,只是要熟悉它的很多属性,下面来看一些常用的:

pycurl.curl() #创建一个pycurl对象的方法
pycurl.curl(pycurl.url, http://www.google.com.hk) #设置要访问的url
pycurl.curl().setopt(pycurl.maxredirs, 5) #设置最大重定向次数
pycurl.curl().setopt(pycurl.connecttimeout, 60)
pycurl.curl().setopt(pycurl.timeout, 300) #连接超时设置
pycurl.curl().setopt(pycurl.useragent, “mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; .net clr 1.1.4322)”) #模拟浏览器
pycurl.curl().perform() #服务器端返回的信息
pycurl.curl().getinfo(pycurl.http_code) #查看http的状态 类似urllib中status属性
pycurl.namelookup_time 域名解析时间
pycurl.connect_time 远程服务器连接时间
pycurl.pretransfer_time 连接上后到开始传输时的时间
pycurl.starttransfer_time 接收到第一个字节的时间
pycurl.total_time 上一请求总的时间
pycurl.redirect_time 如果存在转向的话,花费的时间
pycurl.effective_url
pycurl.http_code http 响应代码
pycurl.redirect_count 重定向的次数
pycurl.size_upload 上传的数据大小
pycurl.size_download 下载的数据大小
pycurl.speed_upload 上传速度
pycurl.header_size 头部大小
pycurl.request_size 请求大小
pycurl.content_length_download 下载内容长度
pycurl.content_length_upload 上传内容长度
pycurl.content_type 内容的类型
pycurl.response_code 响应代码
pycurl.speed_download 下载速度
pycurl.ssl_verifyresult
pycurl.info_filetime 文件的时间信息
pycurl.http_connectcode http 连接代码
pycurl.httpauth_avail
pycurl.proxyauth_avail
pycurl.os_errno
pycurl.num_connects
pycurl.ssl_engines
pycurl.info_cookielist
pycurl.lastsocket
pycurl.ftp_entry_path