搜索
首页后端开发Python教程初学者的HTTP Python请求指南

A Beginner's Guide to HTTP Python Requests

网络上的所有内容都可通过请求访问。如果您的 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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
您如何切成python阵列?您如何切成python阵列?May 01, 2025 am 12:18 AM

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

在什么情况下,列表的表现比数组表现更好?在什么情况下,列表的表现比数组表现更好?May 01, 2025 am 12:06 AM

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

如何将Python数组转换为Python列表?如何将Python数组转换为Python列表?May 01, 2025 am 12:05 AM

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

当Python中存在列表时,使用数组的目的是什么?当Python中存在列表时,使用数组的目的是什么?May 01, 2025 am 12:04 AM

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

说明如何通过列表和数组的元素迭代。说明如何通过列表和数组的元素迭代。May 01, 2025 am 12:01 AM

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

什么是Python Switch语句?什么是Python Switch语句?Apr 30, 2025 pm 02:08 PM

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

Python中有什么例外组?Python中有什么例外组?Apr 30, 2025 pm 02:07 PM

Python 3.11中的异常组允许同时处理多个异常,从而改善了并发场景和复杂操作中的错误管理。

Python中的功能注释是什么?Python中的功能注释是什么?Apr 30, 2025 pm 02:06 PM

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

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

SublimeText3 英文版

SublimeText3 英文版

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

螳螂BT

螳螂BT

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

mPDF

mPDF

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