python中requests模块的使用方法


Posted in Python onApril 08, 2015

本文实例讲述了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
那Requests是怎么样解决同样的问题的呢?

Requests

>>> import requests 
>>> url = 'http://example.test/secret' 
>>> response = requests.get(url,auth=('dan','h0tdish'))
>>> response.status_code 
200 
>>> response.content 
u'Welcome to the secret page!'

只是在调用方法的时候增加了一个auth关键字函数
我敢打赌你不用查文档也能记住。

错误处理 Error Handling

Requests对错误的处理也是很非常方面。如果你使用了不正确的用户名和密码,urllib2会引发一个urllib2.URLError错误,然而Requests会像你期望的那样返回一个正常的response对象。只需查看response.ok的布尔值便可以知道是否登陆成功。

>>> response = requests.get(url,auth=('dan','wrongPass'))
>>> response.ok 
False

其他的一些特性:

* Requests对于HEAD, POST, PUT, PATCH, 和 DELETE方法的api同样简单
* 它可以处理多部分上传,同样支持自动转码
* 文档更好
* 还有更多

Requests 是很好的,下次需要使用HTTP时候可以试试。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python数据类型学习笔记
Jan 13 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
python距离测量的方法
Mar 06 Python
python判断设备是否联网的方法
Jun 29 Python
Python数据可视化之画图
Jan 15 Python
python文本数据处理学习笔记详解
Jun 17 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
python中delattr删除对象方法的代码分析
Dec 15 Python
手把手教你用Django执行原生SQL的方法
Feb 18 Python
基于PyInstaller各参数的含义说明
Mar 04 Python
介绍Python中几个常用的类方法
Apr 08 #Python
python自然语言编码转换模块codecs介绍
Apr 08 #Python
python文件写入实例分析
Apr 08 #Python
python uuid模块使用实例
Apr 08 #Python
Python HTMLParser模块解析html获取url实例
Apr 08 #Python
python内存管理分析
Apr 08 #Python
Python中关于字符串对象的一些基础知识
Apr 08 #Python
You might like
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
Python 的 with 语句详解
2014/06/13 Python
简单介绍Python中的JSON模块
2015/04/08 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
小学岗位竞聘方案
2014/01/22 职场文书
五年级音乐教学反思
2014/02/06 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
总经理的岗位职责
2014/02/23 职场文书
护士长竞聘书
2014/03/31 职场文书
节约用水演讲稿
2014/05/21 职场文书
2014年电厂工作总结
2014/12/04 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
入党转正申请书范文
2019/05/20 职场文书
创业计划书之花店
2019/09/20 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书