首页 > 编程 > Python > 正文

python中requests模块的使用方法

2020-02-23 00:37:10
字体:
来源:转载
供稿:网友

本文实例讲述了python中requests模块的使用方法。分享给大家供大家参考。具体分析如下:

在HTTP相关处理中使用python是不必要的麻烦,这包括urllib2模块以巨大的复杂性代价获取综合性的功能。相比于urllib2,Kenneth Reitz的Requests模块更能简约的支持完整的简单用例。

简单的例子:

想象下我们试图使用get方法从http://example.test/获取资源并且查看返回代码,content-type头信息,还有response的主体内容。这件事无论使用urllib2 或者Requests都是很容易实现的。

urllib2 

>>> import urllib2 >>> url = 'http://example.test/' >>> response = urllib2.urlopen(url)>>> response.getcode() 200 >>> response.headers.getheader('content-type') 'text/html; charset=utf-8'>>> response.read() 'Hello, world!'

Requests

>>> import requests >>> url = 'http://example.test/' >>> response = requests.get(url) >>> response.status_code 200 >>> response.headers['content-type']'text/html; charset=utf-8'>>> response.content u'Hello, world!'

这两种方法很相似,相对于urllib2调用方法读取response中的属性信息,Requests则是使用属性名来获取对应的属性值。
两者还有两个细微但是很重要的差别:

1 Requests 自动的把返回信息有Unicode解码
2 Requests 自动保存了返回内容,所以你可以读取多次,而不像urllib2.urlopen()那样返回的只是一个类似文件类型只能读取一次的对象。

第二点是在python交互式环境下操作代码很令人讨厌的事情

一个复杂一点的例子:

现在让我们尝试下复杂点得例子:使用GET方法获取http://foo.test/secret的资源,这次需要基本的http验证。使用上面的代码作为模板,好像我们只要把urllib2.urlopen() 到requests.get()之间的代码换成可以发送username,password的请求就行了

这是urllib2的方法:

>>> import urllib2>>> url = 'http://example.test/secret'>>> password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()>>> password_manager.add_password(None, url, 'dan', 'h0tdish')>>> auth_handler = urllib2.HTTPBasicAuthHandler(password_manager) >>> opener = urllib2.build_opener(auth_handler)>>> urllib2.install_opener(opener)>>> response = urllib2.urlopen(url)>>> response.getcode()200 >>> response.read()'Welcome to the secret page!'

一个简单的方法中实例化了2个类,然后组建了第三个类,最后还要装载到全局的urllib2模块中,最后才调用了urlopen,那么那两个复杂的类是什么的
迷惑了吗,  这里所有urllib2的文档 http://docs.python.org/release/2.7/library/urllib2.html

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表