python中requests模块的使用方法

 更新时间:2015年04月08日 11:31:33   作者:huaweitman  
这篇文章主要介绍了python中requests模块的使用方法,实例分析了requests模块的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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 序列解包的多种形式及用法解析

    这篇文章主要介绍了python 序列解包的多种形式及用法解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python多进程入门、分布式进程数据共享实例详解

    Python多进程入门、分布式进程数据共享实例详解

    这篇文章主要介绍了Python多进程入门、分布式进程数据共享,结合实例形式详细分析了Python进程操作技巧数据共享相关实现技巧与注意事项,需要的朋友可以参考下
    2019-06-06
  • python time()的实例用法

    python time()的实例用法

    在本篇文章里小编给大家整理了关于如何使用python time()方法,需要的朋友们可以参考下。
    2020-11-11
  • 详解Python匿名函数(lambda函数)

    详解Python匿名函数(lambda函数)

    这篇文章主要介绍了Python匿名函数(lambda函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统

    利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统

    这篇文章主要介绍了利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 在Python的Django框架中使用通用视图的方法

    在Python的Django框架中使用通用视图的方法

    这篇文章主要介绍了在Python的Django框架中使用通用视图的方法,同时提到了相关的安全问题,需要的朋友可以参考下
    2015-07-07
  • Python如何声明以管理员方式运行(附实战案例)

    Python如何声明以管理员方式运行(附实战案例)

    由于Windows的安全机制,Python写的脚本缺少了管理员权限,运行就会受到一些限制,这篇文章主要介绍了Python如何声明以管理员方式运行的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • Python函数中4种参数的使用教程

    Python函数中4种参数的使用教程

    这篇文章主要介绍了Python函数中4种参数的使用包括必需的参数,关键字参数,缺省参数,不定长参数的相关介绍,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • Python之Selenium自动化浏览器测试详解

    Python之Selenium自动化浏览器测试详解

    这篇文章主要为大家详细介绍了Python自动化浏览器测试,使用Selenium,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 如何用 Python 子进程关闭 Excel 自动化中的弹窗

    如何用 Python 子进程关闭 Excel 自动化中的弹窗

    这篇文章主要介绍了如何用 Python 子进程关闭 Excel 自动化中的弹窗,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-05-05

最新评论