python Requests快速入门
源自专栏《Python床头书、图计算、ML目录(持续更新)》
文章目录
如果您迫不及待地想要开始使用Requests,这个页面将为您介绍如何入门。首先确保:
- Requests已安装
- Requests已更新到最新版本
让我们从一些简单的示例开始。
发送请求
使用Requests发送请求非常简单。
首先导入Requests模块:
import requests
现在,让我们尝试获取一个网页。在本例中,让我们获取GitHub的公共时间线:
r = requests.get('https://api.github.com/events')
现在,我们有一个名为r的响应对象。我们可以从这个对象中获取我们需要的所有信息。
Requests的简单API意味着所有形式的HTTP请求都很明显。例如,这是如何进行HTTP POST请求的示例:
r = requests.post('https://httpbin.org/post', data={
'key': 'value'})
很好,对吧?那其他的HTTP请求类型呢:PUT、DELETE、HEAD和OPTIONS?它们同样简单:
r = requests.put('https://httpbin.org/put', data={
'key': 'value'})
r = requests.delete('https://httpbin.org/delete')
r = requests.head('https://httpbin.org/get')
r = requests.options('https://httpbin.org/get')
这些很好,但这也仅仅是Requests能够做到的开始。
在URL中传递参数
通常,您希望在URL的查询字符串中发送一些数据。如果您手动构造URL,这些数据将作为键/值对出现在问号后面,例如httpbin.org/get?key=val。Requests允许您将这些参数作为字符串字典提供,使用params关键字参数。例如,如果您希望将key1=value1和key2=value2传递给httpbin.org/get,您将使用以下代码:
payload = {
'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=payload)
print(r.url)
您可以看到URL已经正确编码:
https://httpbin.org/get?key2=value2&key1=value1
请注意,任何值为None的字典键将不会添加到URL的查询字符串中。
您还可以将列表作为值传递:
payload = {
'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get('https://httpbin.org/get', params=payload)
print(r.url)
响应内容
我们可以读取服务器响应的内容。再次考虑GitHub的时间线:
import requests
r = requests.get('https://api.github.com/events')
r.text
Requests将自动解码来自服务器的内容。大多数Unicode字符集都可以无缝解码。
在发出请求时,Requests会根据HTTP标头对响应的编码进行合理猜测。当您访问r.text时,Requests使用的是由r.encoding猜测的文本编码。您可以查看Requests使用的编码,并使用r.encoding属性进行更改:
r.encoding
'utf-8'
r.encoding = 'ISO-8859-1'
如果更改编码,Requests将在调用r.text时使用r.encoding的新值。在任何需要应用特殊逻辑来确定内容编码的情况下,