網絡上的所有內容都可通過請求訪問。如果您的 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中文網其他相關文章!

ForhandlinglargedatasetsinPython,useNumPyarraysforbetterperformance.1)NumPyarraysarememory-efficientandfasterfornumericaloperations.2)Avoidunnecessarytypeconversions.3)Leveragevectorizationforreducedtimecomplexity.4)Managememoryusagewithefficientdata

Inpython,ListSusedynamicMemoryAllocationWithOver-Asalose,而alenumpyArraySallaySallocateFixedMemory.1)listssallocatemoremoremoremorythanneededinentientary上,respizeTized.2)numpyarsallaysallaysallocateAllocateAllocateAlcocateExactMemoryForements,OfferingPrediCtableSageButlessemageButlesseflextlessibility。

Inpython,YouCansspecthedatatAtatatPeyFelemereModeRernSpant.1)Usenpynernrump.1)Usenpynyp.dloatp.dloatp.ploatm64,formor professisconsiscontrolatatypes。

NumPyisessentialfornumericalcomputinginPythonduetoitsspeed,memoryefficiency,andcomprehensivemathematicalfunctions.1)It'sfastbecauseitperformsoperationsinC.2)NumPyarraysaremorememory-efficientthanPythonlists.3)Itoffersawiderangeofmathematicaloperation

Contiguousmemoryallocationiscrucialforarraysbecauseitallowsforefficientandfastelementaccess.1)Itenablesconstanttimeaccess,O(1),duetodirectaddresscalculation.2)Itimprovescacheefficiencybyallowingmultipleelementfetchespercacheline.3)Itsimplifiesmemorym

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,減法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能