requests 常用用法

2017/03/15 11:42 am posted in  Python 黑魔法

安装

$ pip install requests

使用

GET:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://github.com/timeline.json', params=payload)

POST

r = requests.post("http://httpbin.org/post", data=data)

其他方法:

r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")

响应

对于获取普通的 body,可以从 text 属性中获得:

import requests
r = requests.get('https://github.com/timeline.json')
r.text
u'[{"repository":{"open_issues":0,"url":"https://github.com/...

对于二进制数据,可以使用 r.content, 对于 json 的话,可以直接使用 r.json(),该方法会返回一个被解析的字典或列表。

无论是请求还是相应,用法比较符合直觉,更详细见文档: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

Session

虽然 http 是无状态的,但是请求往往是连续的,状态一般存储在 cookie 里。requests.Session 类便提供了一个 cookie 持续的请求方式,一般自定义 http client 都会继承自这个类。

用法:

>>> import requests
>>> s = requests.Session()
>>> s.get('http://httpbin.org/get')
<Response [200]>

# with
>>> with requests.Session() as s:
>>>     s.get('http://httpbin.org/get')
<Response [200]>

更多的参数可以参考相关文档:Session 更多参数