python-requestspython请求入门


备注

人类的HTTP

请求是Python的唯一非GMO HTTP库,可供人类使用。

请求允许您发送有机草草HTTP/1.1请求,而无需手工劳动。无需手动将查询字符串添加到您的URL,也无需对POST数据进行表单编码。保持活动和HTTP连接池是100%自动的,由urllib3提供支持, urllib3嵌入在请求中。

请求的力量:

>>> 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, ...}

阅读回复

response = requests.get("https://api.github.com/events")
text_resp = response.text
 

JSON响应 :对于json格式的响应,该包提供了一个内置的解码器

response = requests.get('https://api.github.com/events')
json_resp = response.json()
 

在空响应或不可解析内容的情况下,此方法将引发ValueError

GET请求

requests.get() 创建一个GET请求:

response = requests.get('https://example.com/')
 

将查询参数作为字典传递给params 参数:

response = requests.get('https://example.com/', params={"a": 1, "b": 2})
 

对于可能需要基本身份验证的GET请求,您可以按如下方式包含auth 参数:

response = requests.get('https://api.github.com/user', auth=('user', 'pass'))
 

安装或设置

python-requests 可以在Python包索引PyPI上获得,这意味着它可以通过pip安装:

pip install requests
 

可以在请求GitHub存储库中找到最新的源代码

如果您希望从源代码安装它,可以通过克隆GitHub存储库来实现:

git clone git://github.com/kennethreitz/requests.git
 

或者通过获取tarball( -O 将输出写入文件; -L 跟随重定向):

curl -OL https://github.com/kennethreitz/requests/tarball/master
 

然后您可以通过执行setup.py 来安装它

python setup.py install
 

无论您安装它,都可以通过导入常规方式开始使用它

>>> import requests
>>> requests.get('http://stackoverflow.com')
 

其他请求方法

requests 模块具有大多数HTTP方法的顶级函数:

r = requests.put('https://example.com/', data=put_body)
r = requests.delete('https://example.com/')
r = requests.head('https://example.com/')
r = requests.options('https://example.com/')
r = requests.patch('https://example.com/', data=patch_update)
 

POST请求

使用request.post() 方法发出POST请求。

如果您需要将Web表单请求作为POST主体发送,请传入一个包含键值对的字典作为data 参数; requests 会将这些requests 编码为application/x-www-form-urlencoded mimetype body:

r = requests.post('https://github.com/', data={"a": 1, "b": 2})
 

如果需要POST一个json有效负载,可以使用json= 。这将自动将Content-Type标头设置为application/json

r = requests.post('https://github.com/', data={"a": 1, "b": 2})
 

读取状态代码

属性status_code 包含响应的状态代码

good_req = requests.get('https://api.github.com/events')
code_200 = good_req.status_code

notfound_req = requests.get('https://api.github.com/not_found')
code_404 = notfound_req.status_code
 

requests.codes.__dict__ 将提供可用的http状态代码列表。

用户raise_for_status 可以检查status_code是4xx还是5xx,并在这种情况下引发相应的异常。

good_req = requests.get('https://api.github.com/events')
good_req.raise_for_status()
# is a 200 status code so nothing happens

notfound_req = requests.get('https://api.github.com/not_found')
notfound_req.raise_for_status()
# raises requests.exceptions.HTTPError: 404 Client Error