URL传参
对于带参数的URL,传入一个dict作为params
参数:
>>> r = requests.get('https://www.douban.com/search', params={'q': 'python', 'cat': '1001'})
>>> r.url # 实际请求的URL
'https://www.douban.com/search?q=python&cat=1001'
定制HTTP Header
需要传入HTTP Header时,可传入一个dict作为headers
参数:
>>> r = requests.get('https://www.douban.com/', headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'})
>>> r.text
'<!DOCTYPE html>\n<html>\n<head>\n<meta charset="UTF-8">\n <title>豆瓣(手机版)</title>...'
POST
要发送POST请求,只需要把get()
方法变成post()
,然后传入data
参数作为POST请求的数据,我所传入的字典在发出请求时会自动编码为表单form
形式。
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print(r.text)
{
...
"form": {
"key2": "value2",
"key1": "value1"
},
...
}
Timeout
要指定超时,传入以秒为单位的timeout
参数:
# 2.5秒后超时
>>> r = requests.get(url, timeout=2.5)
二进制响应
对于非文本请求可以以二进制byte的方式访问请求响应体:(通常content
用于提取图片、文件)
r.content.decode('utf-8') # 通常相当于r.text
以请求返回的二进制数据创建一张图片,可以使用如下代码:
>>> from PIL import Image
>>> from io import BytesIO
>>> i = Image.open(BytesIO(r.content))