原先一直用pycurl库来做http客户端库使用,这个库的功能也非常强大,性能也非常的好,这个取决于curllib库本身是c语言开发的一个性能非常不错的httpclient库,pycurl只是python版本的接口,因为之前写c++用过pycurl,所以python写的时候自然也就想到了用pycurl库。
pycurl库的安装网上有一大推,我就不在这里描述了,我这里想讲一下它的使用,
主要是导入pycurl库
import pycurl
import cStringIO
cStringIO是用来返回内容的,一般的功能都有
比如设置header,设置超时时间
buf = cStringIO.StringIO()
c = pycurl.Curl()
headers = [ "Content-Type:application/json;charset=utf-8",
"Accept-Encoding:gzip,deflate,sdch",
"Accept-Language:zh-CN,zh;q=0.8" ]
#设置header头部信息
c.setopt(c.HTTPHEADER,headers)
#设置超时时间
c.setopt(c.CONNECTTIMEOUT, 5) #连接超时时间
c.setopt(c.TIMEOUT, 80) #请求超时时间
#设置URL地址
c.setopt(c.URL, 'http://www.baidu.com')
#设置回调函数
c.setopt(c.WRITEFUNCTION, buf.write) 通过buf对象的方法write,把接收到的数据写到buf对象里面
#设置post参数
c.setopt(c.POSTFIELDS, form) #如果设置了这个参数,那么就是post请求。如果没有,那么就是get请求。
#设置代理
c.setopt(c.PROXY, "127.0.0.1:8888")
#开始执行请求动作
c.perform()
#获取返回的数据
ResultData = buf.getvalue()
print '返回数据:',ResultData
----------------------------------------------------(以上内容为最基本的pycurl用法描述)华丽的分割线--------------------------------------------------------------------------------
下面来讲一下requests库的用法,之前有用过urllib/urllib2库,只是偶尔看到过requests库,但是没实际使用过,这次机会合适就想尝试下用一下。
看了很多资料,看了别人写的文章,都说这个库比较好用,至少比比urllib2好用。
具体咱们来看看它的具体用法,客官往下看:
import requests #导入库
r = requests.get('http://www.baidu.com') #这样就可以获取一个网页,非常的方便
print r.text
还有:
requests.post
requests.put
requests.delete
requests.option
这些方法, 客官可以自行脑补, 不一一说明。
这里来说下post方法的用法
post 是主要是参数怎么传递:
payload = {'a':1,'b':'2','c':'3'}
r = requests.post('http://mytest.com/test.do',data=payload) #payload 是一个字典, data= 就是设置post参数 ,是不是很方便呀 ,哈哈。
设置代理:
如果代理需要账户和密码,则需这样:
其他的可以参考下:http://www.sharejs.com/codes/python/9013
--------------------------------------------------------------------又是华丽的分割线--------------------------------------------------------
requests库还有保持持久连接keep-alive, 保持会话的功能,能自动管理cookie
s = requests.Session()
s.post(......) #主要是这样来使用
结束语:
1、在性能没很高要求的情况下,我觉得使用requests更加简单
2、requests一般的需求都比较合适
3、看个人的使用习惯(不过我个人以后感觉会用requests多一点 ,嘿嘿)