9 发送请求之处理响应内容

在上一篇中,我们学习了如何使用 requests 库发送网络请求,现在我们将重点讨论如何处理服务器返回的响应内容。在这一部分,我们将覆盖常见的响应内容处理技巧,帮助你更好地理解和利用网络爬虫的能力。

响应对象简介

当我们使用 requests 库发送请求时,服务器会返回一个响应对象,通常称为 Response 对象。这个对象包含了所有关于请求的响应信息,比如响应状态码、响应内容、头部信息等。

下面是发送请求并获取响应的基本示例:

1
2
3
4
5
6
7
import requests

# 发送GET请求
response = requests.get('https://www.example.com')

# 输出响应状态码
print(response.status_code)

在这里,response 就是一个 Response 对象。我们可以通过它来获取更多的信息。

常用的响应内容处理方法

1. 查看响应状态码

响应状态码可以让我们知道请求是否成功。常见的状态码包括:

  • 200:请求成功
  • 404:页面未找到
  • 500:服务器内部错误

你可以通过 response.status_code 获取响应状态码,如下所示:

1
2
3
4
if response.status_code == 200:
print("请求成功")
else:
print(f"请求失败,状态码:{response.status_code}")

2. 获取响应内容

请求成功后,我们通常需要处理响应的内容。使用 response.content 可以获取原始的响应内容(字节流),而 response.text 则可以获取解码后的文本内容。两者之间的区别在于:

  • response.content:获取字节内容
  • response.text:获取字符内容(已经根据响应头中的 Content-Type 进行解码)
1
2
3
# 获取文本内容
html_content = response.text
print(html_content)

3. 响应的头部信息

在很多情况下,响应的头部信息也是非常重要的,比如内容类型、长度、编码方式等。你可以使用 response.headers 获取这些信息,它以字典的形式返回。

1
2
3
# 获取响应头部信息
headers = response.headers
print("Content-Type:", headers['Content-Type'])

4. 处理JSON响应

如果服务器返回的数据是 JSON 格式,我们可以使用 response.json() 方法将其解析为 Python 字典。这对于 API 请求来说非常有用。

1
2
3
4
5
6
# 发送API请求
api_response = requests.get('https://api.example.com/data')
data = api_response.json()

# 假设返回的数据格式为{"key": "value"}
print(data['key'])

5. 错误处理

在处理请求时,良好的错误处理是必要的。requests.exceptions 模块提供了多种异常,用于处理请求中的错误。

1
2
3
4
5
6
7
try:
response = requests.get('https://www.example.com')
response.raise_for_status() # 如果状态码不是200,会引发一个HTTPError异常
except requests.exceptions.HTTPError as e:
print(f"HTTP错误:{e}")
except requests.exceptions.RequestException as e:
print(f"请求出错:{e}")

小结

在本篇教程中,我们学习了如何处理使用 requests 库发送请求后获得的响应内容,包括查看响应状态码、获取和解析响应内容以及处理常见错误。这些技术将为我们后续的网页解析打下基础。在下一篇文章中,我们将具体讨论如何解析 HTML 文档,以提取我们所需要的信息。

继续保持学习的热情,期待下一次的探索!

9 发送请求之处理响应内容

https://zglg.work/crawler-zero/9/

作者

AI免费学习网(郭震)

发布于

2024-08-11

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论