Requests: 让 HTTP 服务人类
安装 Requests
打开终端,使用pip安装
pip install requests
这可能会比较慢或者失败,如果失败可以尝试下面这个
pip install requests
-i https
://pypi
.tuna
.tsinghua
.edu
.cn
/simple
如果你没有安装 pip (啧啧),那就看下面的
下载zip包 git地址
获得源码之后可以解压到 python 包里,或者安装到你的 site-packages然后回到终端,切换到该目录执行 python setup.py install
Requests基本使用
发送请求
>>>import requests
>>>r
= requests
.get
('https://api.github.com/events')
>>>r
= requests
.post
('http://httpbin.org/post', data
= {'key':'value'})
>>>r
= requests
.put
('http://httpbin.org/put', data
= {'key':'value'})
>>>r
= requests
.delete
('http://httpbin.org/delete')
>>>r
= requests
.head
('http://httpbin.org/get')
>>>r
= requests
.options
('http://httpbin.org/get')
传递 URL 参数
>>>payload
= {'key1': 'value1', 'key2': 'value2'}
>>>r
= requests
.get
("http://httpbin.org/get",params
=payload
)
>>>r
.url
响应内容
>>>import requests
>>>r
= requests
.get
('https://api.github.com/events')
>>>r
.text
>>>r
.encoding
>>>r
.encoding
= 'ISO-8859-1'
>>>r
.content
>>>r
.json
()
>>>r
.raw
>>>r
.status_code
>>> r
.status_code
== requests
.codes
.ok
>>> r
.raise_for_status
()
定制请求头
header 值必须是 string、bytestring 或者 unicode
>>>url
= 'https://api.github.com/some/endpoint'
>>>headers
= {'user-agent': 'my-app/0.0.1'}
>>>r
= requests
.get
(url
, headers
=headers
)
响应头
>>> r
.headers
>>> r
.headers
['Content-Type']
>>> r
.headers
.get
('content-type')
Cookie
>>> url
= 'http://example.com/some/cookie/setting/url'
>>> r
= requests
.get
(url
)
>>> r
.cookies
['example_cookie_name']
'example_cookie_value'
>>> url
= 'http://httpbin.org/cookies'
>>> cookies
= dict(cookies_are
='working')
>>> r
= requests
.get
(url
, cookies
=cookies
)
>>> r
.text
'{"cookies": {"cookies_are": "working"}}'
超时
>>> requests
.get
('http://github.com', timeout
=1)
timeout 仅对连接过程有效,与响应体的下载无关
错误与异常
遇到网络问题(如:DNS 查询失败、拒绝连接等)时,Requests 会抛出一个 ConnectionError 异常
如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常
若请求超时,则抛出一个 Timeout异常
若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常
所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException