本文实例讲述了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的requests模块功能_python中requests模块的使用方法相关推荐

  1. python url模块介绍_python 中 urlparse 模块介绍

    urlparse模块主要是用于解析url中的参数  对url按照一定格式进行 拆分或拼接 1.urlparse.urlparse 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路 ...

  2. python中importlib模块安装_Python中标准模块importlib详解

    Python中标准模块importlib详解 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外 ...

  3. pythonwx功能_python中wx模块的具体使用方法

    wx包中的方法都是以大写字母开头的,而这和Python的习惯是相反的. 本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口.这里介绍wxPython : 根据自 ...

  4. python中random模块用法_Python中random模块用法实例分析

    本文实例讲述了Python中random模块用法.分享给大家供大家参考.具体如下: import random x = random.randint(1,4); y = random.choice([ ...

  5. python私有属性怎么定义_Python中定义私有属性的方法是()。

    [判断题]请假条带有请求的性质,所以一般来说篇幅要尽量长一些,以示郑重;更多要用煽情性语句,以打动对方.( ) [单选题]关于类和对象的关系,下列描述正确的是(). [选择]Трудоспособны ...

  6. python怎么用第三方库_python中第三方库的下载方法

    1.最常用:在命令行中输入  pip install "库名称"  例如 pip install gensim 查看pip的命令集: pip uninstall "库名& ...

  7. python反爬虫与绕过_python中绕过反爬虫的方法总结

    我们在登山的途中,有不同的路线可以到达终点.因为选择的路线不同,上山的难度也有区别.就像最近几天教大家获取数据的时候,断断续续的讲过header.地址ip等一些的方法.具体的爬取方法相信大家已经掌握住 ...

  8. python控制台清屏代码_python中代码清屏的方法是什么

    python中代码清屏的方法是什么 发布时间:2020-09-03 10:52:03 来源:亿速云 阅读:97 作者:小新 这篇文章给大家分享的是有关python中代码清屏的方法是什么的内容.小编觉得 ...

  9. python模块讲解_python中常用模块详解一

    1.time 模块 import time s = time.localtime() # 把时间转化成格式化的时间,通过. 取得里面的年月日等 struct_time 格式 time.struct_t ...

最新文章

  1. 腾讯杰出科学家写给2029的信:计算机视觉AI技术的爆点在哪里?
  2. 数学建模太难?做到这三件事,让你事半功倍
  3. SAP财务中国本土好内容
  4. springboot中如何获取yml配置文件中的配置信息
  5. Linux安装宝塔(Bt-Panel),修改用户名或密码,查看面板入口
  6. python列表的排序方法_Python 列表 sort() 方法
  7. windows防护之(一)屏蔽危险端口
  8. 《深入解析Windows操作系统第4版》随笔记录02
  9. HR必看的86本书籍
  10. 聊聊激光雷达原理之i-TOF
  11. /etc/shadow可以破解吗?
  12. 水仙花数 (hdu2010)
  13. 蓝桥杯训练 日期计算
  14. c#语言中if语句多条件,关于C# if语句中并列条件的执行
  15. 关于个人对培训的看法
  16. Efficient multi-keyword ranked query over encrypted data in cloud computing (6)
  17. recovery的一些开发点滴
  18. 综合布线测试仪的测试方法与标准
  19. HMC 命令行 查看小型机信息命令大全
  20. 2022 届互联网大厂秋招时间

热门文章

  1. linux环境变量自动配置,Linux进入系统时自动配置 环境变量的要领
  2. pat 乙级 1020 月饼(C++实现)
  3. 什么是单模光纤收发器,应用范围有哪些?
  4. [渝粤教育] 昆明理工大学 会计学 参考 资料
  5. 【渝粤教育】国家开放大学2018年春季 7397-21T家庭教育咨询与辅导 参考试题
  6. 【渝粤题库】国家开放大学2021春2072人文社会科学基础(A)答案
  7. LoRa技术实现水表抄表远距离无线传输方案的应用
  8. 控制器局域网can总线
  9. 物联网在改造海上钻井平台监测方面发挥着关键作用
  10. php 读取页面全部变量,PHP-如何从外部文件获取“页面”变量?