首頁 > 後端開發 > Python教學 > 初學者的HTTP Python請求指南

初學者的HTTP Python請求指南

Christopher Nolan
發布: 2025-02-18 09:56:10
原創
493 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板