Python Requests - 处理重定向2025年1月5日 | 阅读 4 分钟 Python 的 requests 库是一个强大且流行的发送 HTTP 请求的工具。它一项有用的功能是自动处理重定向。重定向在网络上很常见,服务器通过将客户端重定向到另一个 URL 来响应客户端的请求。这可能出于多种原因,例如 URL 重构、负载均衡或内容迁移。理解如何使用 requests 库处理这些重定向对于构建健壮高效的网络抓取或网络交互工具至关重要。 理解 HTTP 重定向在深入研究 requests 库处理重定向的具体细节之前,了解 HTTP 重定向的基础知识非常重要。HTTP 重定向通过服务器响应中的 3xx 状态码来指示。常见的 3xx 状态码包括:
当客户端收到这些状态码之一时,它需要按照响应中的 Location 标头提供的重定向到新 URL。 使用 requests 处理重定向requests 库简化了重定向的处理。默认情况下,它会自动跟踪重定向。以下是其工作原理的基本示例: 输出 https://github.com 200 在此示例中,如果您访问 http://github.com,您会注意到它会重定向到 https://github.com。requests 库会自动跟踪此重定向,并打印最终 URL。 控制重定向行为虽然默认的跟踪重定向行为很方便,但在某些情况下,您可能希望对重定向过程有更多的控制。requests 库提供了几种管理此行为的方法。 禁用重定向 要禁用自动重定向,可以使用 allow_redirects 参数: 输出 301 https://github.com/ 在这种情况下,requests 不会跟踪重定向。响应将包含原始状态码(例如 301)和 Location 标头,其中包含请求将被重定向到的 URL。 限制重定向次数 默认情况下,requests 会跟踪多达 30 次重定向。您可以使用自定义会话和 max_redirects 属性来更改此限制: 输出 http://example.com/ 在此示例中,会话将跟踪最多 5 次重定向。如果重定向链超过各自所需的限制,将引发 TooManyRedirects 异常。 检查重定向历史记录requests 库允许您检查请求过程中发生的重定向历史记录。这可以通过响应对象的 history 属性访问: 输出 [ history 属性是重定向过程中创建的响应对象列表。您可以遍历此列表以查看每个中间步骤。 实际应用网页抓取 抓取网站时,处理重定向至关重要,因为许多网站使用重定向来管理其内容。例如,网站可能会在从移动设备访问时将用户重定向到该网站的移动版本。以下是如何处理此类场景: 输出 Redirected History: 301 http://example.com 200 https://www.iana.org/domains/example Example Domain 在此示例中,该脚本会自动处理重定向,然后使用 BeautifulSoup 解析最终内容。 API 请求一些 API 使用重定向在不同服务器之间进行负载均衡。在处理此类 API 时,处理重定向至关重要,以确保您的请求到达正确的服务器: 输出 Request failed with status code: 404 在这种情况下,脚本会跟踪重定向以确保 API 请求成功完成。 结论借助 requests 库的内置自动重定向支持,在 Python 中使用 requests 库处理重定向非常简单。通过了解 HTTP 重定向的基础知识,并利用 requests 库提供的各种功能和自定义选项,您可以有效地管理网络抓取和网络交互任务中的重定向。无论您是需要自动跟踪重定向、禁用它们、限制重定向次数,还是实现自定义重定向处理逻辑,requests 库都提供了满足您需求的灵活性和功能。 |
在本教程中,我们将编写Python程序来合并两个已排序的数组,而无需额外数组或空间。这个问题在技术面试中很常见。我们将使用各种技术来解决这个问题。让我们理解问题陈述。在一个二进制二维矩阵中,我们的...
阅读 6 分钟
Python 是一种多功能编程语言,已成为数据分析和可视化领域的强大工具。在当今复杂的数据社会中,数据分析和可视化是数据科学过程的重要组成部分。Python 提供了各种库……
7 分钟阅读
?简介:在本教程中,我们将学习如何在 Python 中实现 KNN 算法。KNN 是一种简单的监督机器学习 (ML) 算法。监督学习可用于分类或回归,并经常用于缺失值插补。KNN 算法是基于...
阅读 6 分钟
在接下来的教程中,我们将讨论可用于学习人工智能和机器学习的不同 Python 书籍。但在开始之前,让我们简要了解一下 Python 是什么。Python 编程语言简介 Python 是一种高级、解释型编程语言,以其...
阅读 4 分钟
?介绍 数据操作是数据分析过程中的一个关键方面,根据特定条件替换 pandas DataFrame 中的值是每个数据科学家和分析师都应该掌握的技能。Pandas 是一个强大且广泛使用的数据操作库,在...
5 分钟阅读
简介 在科学计算领域,管理不同数量级的量是常见事件。Python 凭借其灵活的数值能力,为处理科学记数法和浮点数提供了强大的支持。理解如何有效地使用这些数学表示法至关重要...
阅读 6 分钟
语音助手在现代生活中确实扮演着重要的角色,因为它们为人们提供了简单的交互和节省时间。例如,设置提醒和根据品味询问电影,语音助手会做出回应。向语音助手建议电影会...
阅读 10 分钟
?引言 Python 的普遍性及其库生态系统 Python 作为全球最灵活和广泛使用的编程语言之一脱颖而出。其简洁性、可读性以及对多种编程范式的支持,使其在开发者中广受欢迎。Python 实力的核心在于其广泛的生态系统...
阅读 8 分钟
RocketPy 简介 RocketPy 库是基于 Python 的工具。它模拟大功率火箭的飞行动态并进行分析。提供的模拟是一种易于使用且精确的方法。它用于模拟火箭的上升和下降阶段。该工具面向业余爱好者和航空航天专业人士。RocketPy...
7 分钟阅读
引言 在编程中,优雅地处理错误是编写健壮且可维护代码的关键方面。Python 和许多其他编程语言一样,提供了一种强大的错误处理机制,称为异常。异常允许您以结构化且...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India