网络上的所有内容都可通过请求访问。如果您的 Python 应用程序需要网页信息,则需要发出 Web 请求。本文将深入探讨 Python 请求。我们将了解 Web 请求的结构以及如何发出 Python 请求。最终,您将能够使用 Python requests 库,这将使整个过程更加轻松。
要点
- HTTP(超文本传输协议)是一种用于在 Web 上交换数据的客户端-服务器协议。它使用 TCP 作为传输协议以实现可靠的传输。HTTP 请求由客户端发起,并由服务器处理,服务器返回相应的响应。HTTP 是无状态的,这意味着连续两次请求之间没有关联。
- Python requests 库简化了在 Python 中发出 HTTP 请求的过程。它抽象了发出请求的复杂性,提供了一个易于使用的接口。该库允许发送从基本到复杂的 Python HTTP 请求。它可以使用 pip 安装,并用于发出 GET 请求、处理状态代码、读取响应正文以及与 API 交互。
- HTTP 标头在 HTTP 通信中提供附加信息。它们可以在 Python requests 库中进行自定义,以提供有关发送者或消息的附加信息。例如,User-Agent 标头提供有关发出请求的客户端的信息,而 Accept-Language 标头则传达客户端可以理解的语言。
HTTP 请求简介
要在 Web 上交换数据,我们首先需要一个通信协议。我们在浏览 Web 时使用的协议是超文本传输协议,或 HTTP。HTTP 使用 TCP 作为传输协议,因为它需要可靠的传输,而只有 TCP 才能保证这一点。
假设有一个我们需要的资源——例如位于世界某个地方的 Web 服务器上的 HTML 页面。我们想要访问此资源,或者换句话说,我们想要在我们的 Web 浏览器中查看该页面。我们首先要做的是发出 HTTP 请求。HTTP 是一种客户端-服务器协议,这意味着请求由客户端发起。
服务器收到请求后,会对其进行处理并返回相应的响应。
服务器的回复方式可能有所不同。它可能会发送我们请求的资源,或者如果出现意外情况,则会回复状态代码。
在每个通信协议中,信息都需要位于特定的字段中。这是因为客户端和服务器都应该知道如何解释请求或响应。在接下来的部分中,我们将了解 HTTP 请求和 HTTP 响应的构建方式。我们还将讨论最重要字段的作用。
HTTP 请求
HTTP 最重要的设计特性之一是它是人类可读的。这意味着当我们查看 HTTP 请求时,即使底层有很多复杂性,我们也可以轻松地阅读所有内容。HTTP 的另一个特性是它是无状态的。这意味着连续两次请求之间没有关联。HTTP 协议不记得任何之前的请求。这意味着每个请求都必须包含服务器执行请求所需的一切。
有效的 HTTP 请求必须包含以下元素:
- HTTP 方法——例如 GET 或 POST
- HTTP 协议的版本
- 要获取的资源的路径
然后,我们还可以添加一些可选的标头,这些标头指定有关发送者或消息的附加信息。常用 HTTP 请求标头的示例包括 User-Agent 或客户端首选的自然语言。这两个可选标头都提供了有关发出请求的客户端的信息。
这是一个 HTTP 消息示例,我们可以清楚地理解所有指定的字段:
<code>~~~http GET / HTTP/1.1 Host: www.google.com Accept-Language: en-GB,en;q=0.5 ~~~</code>
第一行指定请求类型和 HTTP 协议的版本。然后,我们指定发出请求的客户端接受的主机和语言。通常,消息要长得多,但这可以提示它们的外观。
HTTP 响应
现在我们了解了 HTTP 请求的外观,我们可以继续查看 HTTP 响应。
HTTP 响应通常包含以下元素:
- HTTP 协议的版本
- 状态代码,带有描述性简短消息
- HTTP 标头列表
- 包含请求资源的消息正文
现在我们已经介绍了您需要的基本元素,在采取下一步之前,值得总结一下。现在应该清楚的是,每当客户端想要与 HTTP 服务器通信时,它都必须创建并发送 HTTP 请求。然后,当服务器收到它时,它会创建并发送 HTTP 响应。
我们终于准备好介绍 Python requests 库了。
Python requests 库
Python requests 库允许您发送 Python HTTP 请求——从基本请求到复杂请求。Python requests 库抽象了发出复杂 Python 请求的复杂性,提供了一个易于使用的接口。在接下来的部分中,我们将了解如何创建简单的 Python 请求并解释响应。我们还将了解 Python requests 库提供的一些功能。
安装 Python requests
首先,我们需要安装 Python requests 库。让我们使用 pip 安装它:
<code>$ pip install requests</code>
正确安装 Python requests 库后,我们就可以开始使用它了。
使用 Python requests 发出我们的第一个 GET 请求
首先,我们需要创建一个 Python 文件。在此示例中,我们将其命名为 web.py。在此源文件中,插入以下代码:
<code>import requests URL = "https://www.google.com" resp = requests.get(URL) print(resp)</code>
此程序对 Google 发出 GET 请求。如果我们运行此程序,我们可能会得到以下输出:
<code>$ python web.py <response></response></code>
那么,这是什么意思呢?
我们之前讨论过状态代码。此输出告诉我们我们的请求已成功接收、理解和处理。还有其他代码,我们可以列出一些最常见的代码:
- 301 Moved Permanently。这是一条重定向消息。我们正在查找的资源的 URL 已移动。新 URL 附带响应。
- 401 Unauthorized。这表示客户端错误响应。在这种情况下,服务器告诉我们必须先进行身份验证才能继续发出请求。
- 404 Not found。这也表示客户端错误响应。特别是,这意味着服务器找不到我们正在查找的资源。
如果我们想有条件地检查状态,并根据状态代码提供不同的操作呢?我们可以轻松地做到这一点:
<code>~~~http GET / HTTP/1.1 Host: www.google.com Accept-Language: en-GB,en;q=0.5 ~~~</code>
如果我们现在运行脚本,我们将得到不同的结果。尝试一下,看看我们得到了什么。?
如果我们还需要每个状态代码附带的描述性简短消息,可以使用 resp.reason
。对于 200 状态代码,我们将简单地得到 OK。
检查 Python 请求的响应
此时,我们知道如何发出基本的 Python 请求。请求之后,我们需要响应,对吧?
在上一节中,我们看到了如何获取响应的状态代码。现在,我们想要读取响应的主体,即我们请求的实际资源。为此,我们需要使用 resp.content
。假设我们正在查找 Google 首页。
当我们运行脚本时,我们会得到以下内容:
<code>$ pip install requests</code>
我添加了 [...]
,因为我们获得的资源(一个 text/html 文档)太长而无法打印。有多长?我们可以使用 len(resp.content)
获取此信息。在上面的例子中,它是 13931 字节——在这里打印肯定太多了!
(以下内容由于篇幅限制,仅保留概要,详细内容请参考原文)
使用 API
Python requests 库之所以如此受欢迎,原因之一是它使与 API 的交互变得非常容易。在本例中,我们将使用一个简单的 API 来预测一个人的年龄,给定他们的姓名。此 API 称为 Agify。
自定义标头
HTTP 标头为 HTTP 通信的双方提供附加信息。在以下示例中,我们将看到如何更改 HTTP GET 请求的标头。特别是,我们将更改 User-Agent 和 Accept-Language 标头。User-Agent 告诉服务器有关请求代理的应用程序、操作系统和供应商的一些信息。Accept-Language 标头传达客户端能够理解的语言。
结论
在本文中,我们讨论了 HTTP 协议,并进行了简短的理论介绍。然后,我们研究了 Python requests 库。我们了解了如何编写基本的 Python HTTP 请求以及如何根据我们的需求对其进行自定义。
关于 Python 中 HTTP 请求的常见问题
(以下内容由于篇幅限制,仅保留问题,详细内容请参考原文)
- Python 中的 requests 库是什么?
- 如何安装 requests 库?
- 如何使用 requests 发出简单的 GET 请求?
- 如何在 GET 请求中处理查询参数?
- 如何使用 requests 发出 POST 请求?
以上是初学者的HTTP Python请求指南的详细内容。更多信息请关注PHP中文网其他相关文章!

Python列表切片的基本语法是list[start:stop:step]。1.start是包含的第一个元素索引,2.stop是排除的第一个元素索引,3.step决定元素之间的步长。切片不仅用于提取数据,还可以修改和反转列表。

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/删除,2)储存的二聚体和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,请考虑performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

choosearraysoverlistsinpythonforbetterperformanceandmemoryfliceSpecificScenarios.1)largenumericaldatasets:arraysreducememoryusage.2)绩效 - 临界杂货:arraysoffersoffersOffersOffersOffersPoostSfoostSforsssfortasssfortaskslikeappensearch orearch.3)testessenforcety:arraysenforce:arraysenforc

在Python中,可以使用for循环、enumerate和列表推导式遍历列表;在Java中,可以使用传统for循环和增强for循环遍历数组。1.Python列表遍历方法包括:for循环、enumerate和列表推导式。2.Java数组遍历方法包括:传统for循环和增强for循环。

本文讨论了Python版本3.10中介绍的新“匹配”语句,该语句与其他语言相同。它增强了代码的可读性,并为传统的if-elif-el提供了性能优势

Python中的功能注释将元数据添加到函数中,以进行类型检查,文档和IDE支持。它们增强了代码的可读性,维护,并且在API开发,数据科学和图书馆创建中至关重要。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),