pycurl和requests使用感受

原先一直用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参数 ,是不是很方便呀 ,哈哈。


设置代理:

proxies = {
  "http""http://10.10.1.10:3128",
  "https""http://10.10.1.10:1080",
}
 
requests.get("http://www.zhidaow.com", proxies=proxies)


如果代理需要账户和密码,则需这样: 

view source
print ?
proxies = {
    "http""http://user:[email protected]:3128/",
}


其他的可以参考下:http://www.sharejs.com/codes/python/9013


--------------------------------------------------------------------又是华丽的分割线--------------------------------------------------------


requests库还有保持持久连接keep-alive, 保持会话的功能,能自动管理cookie

s = requests.Session()

s.post(......)  #主要是这样来使用


结束语:

1、在性能没很高要求的情况下,我觉得使用requests更加简单

2、requests一般的需求都比较合适

3、看个人的使用习惯(不过我个人以后感觉会用requests多一点 ,嘿嘿)

c.setopt(c.HTTPHEADER,headers)

你可能感兴趣的:(Python)