作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员
Requests 是 Python 中一个大名鼎鼎的 HTTP 库,优雅而简单。
Requests 的宣言(宗旨)是:HTTP for Humans (让 HTTP 服务人类)
吉祥物?
在 Requests 官网 中,可以很容易的发现一只可爱的海龟:
应该是 Requests 的吉祥物(标志),就像 Linux 的企鹅一样。可惜,经过多方查找,无果!但这并不影响我们学习和使用它。
Requests 的优势
和 Requests 一样,很多也模块提供了相似的功能,例如:urllib、urllib2、httplib、httplib2,为什么 Requests 能够脱引而出呢?
正如 Requests 宣言所说 - HTTP for Humans。在 Python 的世界里,一切都应该简单。
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}
虽然 Python 标准库中的 urllib2 模块包含了平常我们使用的大多数 HTTP 功能,但是它的 API 使用起来并不自然,而且需要巨大的工作量,来完成最简单的任务。已经不适合现在的时代和互联网了,Requests 的诞生让我们有了更好的选择。
Requests 允许发送绿色的 HTTP/1.1 请求,无需手工劳动。你不需要手动为 URL 添加查询字串,也不需要对 POST 数据进行表单编码。Keep-alive 和 HTTP 连接池的功能是 100% 自动化的,一切动力都来自于根植在 Requests 内部的 urllib3。
用户见证
既然 Requests 这么棒,那一定有众多的粉丝和拥护者了,没错,一起来看看吧!
NSA、Amazon、Google、Twilio、Runscope、Mozilla、Heroku、PayPal、NPR、Obama for America、Transifex、Native Instruments、Washington Post、Twitter、SoundCloud、Kippt、Readability、Sony、以及若干不愿公开身份的政府机构都在内部使用。
-
Armin Ronacher
Requests 是一个完美的例子,它证明了通过恰到好处的抽象,API 可以写得多么优美。 -
Matt DeBoard
我要想个办法,把 @kennethreitz 写的 Python requests 模块做成纹身。一字不漏。 -
Daniel Greenfeld
感谢 @kennethreitz 的 Requests 库,刚刚用 10 行代码炸掉了 1200 行意大利面代码。今天真是爽呆了! -
Kenny Meyers
Python HTTP:疑惑与否,都去用 Requests 吧。简单优美,而且符合 Python 风格。
Requests 是有史以来下载最多的 Python 包之一,每月超过 700 万的下载,真是酷毙了!
功能特性
Requests 完全满足今日 Web 的需求。
- 国际化域名和 URL
- Keep-Alive & 连接池
- 带持久 Cookie 的会话
- 浏览器式的 SSL 认证
- 基本/摘要式的身份认证
- 优雅的 key/value Cookie
- 自动解压
- 自动内容解码
- Unicode 响应体
- 文件分块上传
- 连接超时
- 流下载
- 支持 .netrc
- 分块请求
- 线程安全
Requests 支持 Python 2.6- 2.7 & 3.3-3.5,而且能在 PyPy 下完美运行。
中文文档
Requests 官方文档已经支持多种语言了,对我们来说,最关注的肯定是中文版,强烈推荐!
只需要进入“Chinese”链接即可。