12 使用Requests库处理响应的内容
在上一篇文章中,我们学习了如何使用 Requests 库发起 POST 请求。在获得响应后,处理这一响应的内容是我们进行网页访问自动化的关键步骤。本节将着重于如何有效地处理响应内容,包括获取响应文本、JSON 数据和其他重要的信息。
1. 获取响应文本
当我们发起请求并得到了响应后,最基本的操作是获取响应的文本内容。Requests 库提供了简便的方法来实现这一点。
import requests
# 发起 POST 请求
url = 'https://httpbin.org/post'
data = {'key': 'value'}
response = requests.post(url, data=data)
# 获取响应文本
response_text = response.text
print(response_text)
在这个例子中,我们向 https://httpbin.org/post
发起了一个 POST 请求,并打印了服务器返回的响应文本。response.text
将返回一个字符串,表示响应的内容。
2. 获取 JSON 数据
如果服务器返回的数据是 JSON 格式,我们可以直接使用 response.json()
方法来解析它。
import requests
# 发起 GET 请求
url = 'https://jsonplaceholder.typicode.com/posts/1'
response = requests.get(url)
# 获取 JSON 数据
json_data = response.json()
print(json_data)
# 访问具体字段
print(f"Title: {json_data['title']}")
在上面的代码中,我们从一个示例 API 获取了一篇文章的详细信息,并访问了其中的“标题”字段。使用 response.json()
可以方便地解析 JSON 格式的数据,使得后续数据处理更为简单。
3. 检查响应状态
在处理响应时,检查请求的状态码是非常重要的。Requests 库为我们提供了简单的方法来检查请求是否成功。
import requests
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
# 检查状态码
if response.status_code == 200:
print("请求成功!")
print(response.json())
else:
print(f"请求失败,状态码:{response.status_code}")
在这个例子中,我们检查了响应的状态码。如果状态码是 200
,表示请求成功;否则,我们输出失败的状态码。
4. 处理响应头
有时,响应头也包含着重要的信息,例如内容类型、服务器信息等。可以通过 response.headers
来访问这些头部信息。
import requests
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
# 获取响应头
headers = response.headers
print("内容类型:", headers['Content-Type'])
在这段代码中,我们获取并打印出响应的内容类型,了解返回的数据格式。
5. 处理异常
在处理网络请求时,可能会发生各种异常,比如请求超时、连接错误等。使用 try...except
可以帮助我们捕捉这些异常。
import requests
url = 'https://jsonplaceholder.typicode.com/posts/1'
try:
response = requests.get(url, timeout=5)
response.raise_for_status() # 检查请求是否成功
data = response.json()
print(data)
except requests.exceptions.HTTPError as http_err:
print(f"HTTP 错误: {http_err}")
except requests.exceptions.RequestException as req_err:
print(f"请求错误: {req_err}")
在上述例子中,我们设置了请求超时,并且用 raise_for_status()
方法来检查响应状态。如果发生错误,我们能够捕捉并输出相应的错误信息。
结论
我们学习了如何处理来自服务器的响应,包括获取文本、解析 JSON 和处理异常等。掌握这些技能将使我们在网页访问自动化中更加得心应手。下一篇文章中,我们将介绍如何使用 BeautifulSoup
库抓取网页数据,敬请期待!