Python requests模塊——HTTP 請求

在本教程中,我們將了解 Python requests模塊,或者如何使用 Python 請求庫處理請求。requests模塊是 Python 中發出 HTTP 請求的標準方式。我們還將討論請求的特徵。最後,我們將學習如何針對不同情況優化和定製這些功能。

本教程包括以下主題。

  • 介紹
  • Python requests模塊
  • 獲取請求
  • 開機自檢請求
  • 狀態代碼
  • JSON 回應
  • 請求標題
  • 消息正文
  • 其他重要的 HTTP 方法
  • 結論

讓我們了解一下請求庫的基本介紹。

介紹

一般來說,我們從網站上尋找一些信息。或者我們可能想進入社交媒體賬戶,查看郵件,觀看在線視頻。我們可能使用 web 瀏覽器發送請求,web 伺服器從 web 伺服器返回所需的結果。從網上獲取信息,需要通過網頁瀏覽器發送請求。

例如- 我們在谷歌上搜索 Python 教程。然後請求者向谷歌伺服器發送一個 HTTP 請求,伺服器返回帶有狀態碼的搜索結果。

啟動通信有兩個主要組件——客戶端和伺服器。我們使用超文本傳輸協議(HTTP),這使得客戶端和伺服器之間能夠通過互聯網進行通信。

Python 提供了requests模塊,允許我們使用 Python 腳本發出這些請求。

Python requests模塊

它是 Python 中最強大的工具,允許我們在網路上發送請求。它包括許多發送 HTTP 請求的特性和方法。發送請求的系統被稱為客戶端,持有 web 伺服器的系統被稱為伺服器。

在處理請求時,我們會遇到以下方法。

  • GET – 用於向伺服器請求數據。
  • POST – 用於向伺服器提交一些數據進行處理。

Python requests模塊由許多簡單的 API 組成,有助於處理這些請求。這些 API 有許多功能,如添加標題、發送自定義標題、用網址傳遞參數等。

要開始處理請求,第一步是使用以下命令在 Python 中安裝requests模塊。


pip install requests

或者

我們也可以使用 Pipenv (Python 打包工具)來安裝requests模塊。鍵入以下命令。


pipenv install requests

導入文件中的 requests 模塊,檢查它是否安裝成功。


import requests

現在,我們準備開始學習 Python 請求的旅程。

獲取請求

GET 和 POST 方法決定了用戶在網頁上的操作。GET 是 Python requests模塊中最通用的方法之一。它指定用戶正試圖從指定的資源中檢索數據。換句話說,它用於向一個網址發送請求。要調用 GET 請求,我們使用以下語法。


requests.get(url, param = {key:value}, args)

在上面的方法中, url *參數是用戶發送請求的特定網站的 url。 param 參數用於發送字典中的查詢字元串, 參數* 是多個命名參數之一。

當獲取請求成功發送後,該方法將返回一個請求。響應對象。此對象保存從伺服器收到的響應。我們可以在變數中分配 get()** 請求結果。

此對象保存從伺服器收到的響應。因此,我們可以將 get() 請求結果賦給一個變數。

發出獲取請求

使用requests模塊發出 HTTP 請求是一種非常簡單的方法。下面是發出請求的代碼。

這裡,響應對象將存儲信息。以下是基本屬性。

  • 內容- 返迴響應的數據內容。
  • 狀態碼- 返回我們請求的狀態。例如- 200 OK 表示您成功請求,404 NOT FOUND 表示未找到資源。
  • CookieJar-它用來獲取一個 CookieJar 對象,該對象擁有我們從伺服器獲得的所有 CookieJar。

示例-


import requests
req = requests.get('http://www.javatpoint.com/')

print(req.encoding) # returns 'utf-8'
print(req.status_code) # returns 200
print(req.elapsed) # returns datetime.timedelta(0, 1, 666890)
print(req.url) # returns 'https://edureka.co/'

print(req.history) 

print(req.headers['Content-Type'])

輸出:

ISO-8859-1
200
0:00:01.007097
https://www.javatpoint.com/
[]
text/html;charset=ISO-8859-1 

開機自檢請求

POST 方法用於使用 post() 方法發送信息。基本語法如下。

語法

requests.post(url,數據={key: value},json={key: value},args)

以下是重要的參數。

  • url-URL 是一個強制參數,它指示我們想要向其發送一些數據的 URL。
  • 數據- 它指定了我們要發送到 URL 的字典、文件對象或元組。這是一個可選參數。
  • json – 這是要發送到 URL 的 json 對象。

開機自檢方法返回請求。響應對象。

狀態代碼

狀態代碼是我們在發出 get 或 POST 請求後得到的響應。狀態代碼通知我們請求的狀態。

有許多狀態代碼可用於響應。例如,當我們的請求成功時,狀態代碼將是 200 或 201,404 狀態代碼是錯誤的請求或我們正在尋找的頁面沒有找到。

我們也可以使用這些信息在我們的代碼中做出決定。


if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')

如果狀態碼為 200,則列印成功,如果結果為 404,則程序列印未找到。

有一點永遠不要忘記,這種方法不會驗證狀態代碼是否等於 200。這是因為 200 到 400 範圍內的其他狀態代碼,如 204 NO CONTENT,在某種意義上也被認為是成功的。

例如-204 將指示請求成功,但是消息正文中沒有要返回的內容。

JSON 回應

JSON 代表 JavaScript 對象符號,這是一種最流行的數據格式傳輸方式。網頁瀏覽器很容易讀取 JSON 數據。數據以字典形式(鍵、值對)存儲。

如何將 JSON 轉換成 Python 字典?

我們使用 r.json()方法從 json 響應中創建一個 Python 字典。讓我們看看下面的例子。

示例-


import requests
json_data = {'username':'mathew','password':'1234'}
r = requests.post('https://httpbin.org/post',data = json_data)

print(r.json())

輸出:

{'args': {}, 'data': '', 'files': {}, 'form': {'password': '1234', 'username': 'mathew'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '29', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.25.1', 'X-Amzn-Trace-Id': 'Root=1-60b711e8-60f535db7df2f6a61f710e29'}, 'json': None, 'origin': '132.154.100.245', 'url': 'https://httpbin.org/post'}

存儲在變數中

JSON 數據可以轉換成 Python 字典,也可以存儲在變數中。讓我們理解下面的例子。

示例-


import requests
json_data = {'username':'mathew','password':'1234'}
r = requests.post('https://httpbin.org/post',data = json_data)
r_dictionary= r.json()
print(r_dictionary['form'])

輸出:

{'password': '1234', 'username': 'mathew'}

請求標題

我們可以使用 get() 方法創建一個自定義標題。使用 headers 參數在 get() 中傳遞 HTTP 頭的字典。

讓我們理解下面的例子。

示例-


import requests

response = requests.get(
    'https://api.github.com/search/repositories',
    params={'q': 'requests+language:python'},
    headers={'Accept': 'application/vnd.github.v3.text-match+json'},
)

json_result = response.json()
repo = json_result['items'][0]
print(f'Text matches: {repo["text_matches"]}')

輸出:

Text matches: [{'object_url': 'https://api.github.com/repositories/4290214', 'object_type': 'Repository', 'property': 'description', 'fragment': 'Requests + Gevent = <3', 'matches': [{'text': 'Requests', 'indices': [0, 8]}]}]

解釋-

在上面的代碼中,accept頭是應用可以處理的內容類型。例如,我們使用了頭值應用/vnd.github.v3.text-match+json、專有的 GitHub Accept 頭。標題的內容是 JSON 格式的。

其他重要的 HTTP 方法

除了 GET 和 POST 方法之外,HTTP 中很少有基本的方法,包括 PUT、DELETE、HEAD、PATCH 和 OPTIONS。這些方法用於創建、讀取、更新和刪除(或 CRUD)操作。下面是 HTTP 方法的匯總表。

| HTTP 方法 | create, read, update, and delete | 整個集合 | 特定的物品 |
| 郵政 | 創造 | 它顯示了帶有鏈接客戶 id 的位置標題上的 201(已創建)。 | 如果資源已經存在,它顯示 404(未找到)。 |
| GETRead | 它顯示 200,客戶列表,分頁 | 404、如果標識未找到或無效。 |
| 放 | 更新 | 它顯示 405,除非我們想替換所有資源。 | 404、如果標識未找到或無效。 |
| 修補 | 更新 | 它顯示 405,除非我們想修改整個集合本身。 | 404、如果標識未找到或無效。 |
| 刪除 | 刪除 | 它顯示 405,除非我們想刪除整個集合。 | 404、如果標識未找到或無效。 |

消息正文

消息正文用於傳遞數據,而不是查詢字元串中的參數。這些數據通過 POST、PUT 和不太常見的補丁傳遞。數據可以是字典、元組列表、位元組或類似文件的對象。使用請求,您將把有效負載傳遞給相應函數的數據參數。

如果請求內容類型為application/x-www-form-URL encoded,數據將在字典中發送。


requests.post('https://httpbin.org/post', data={'key':'value'})

我們也可以使用元組列表發送相同的數據。


requests.post('https://httpbin.org/post', data=[('key', 'value')])

結論

我們已經討論了 Python requests模塊的基本細節,這將非常有助於進行基本的伺服器請求。

要點是 get() 方法不如 post() 方法安全,因為請求只能通過 URL 傳遞。因此,敏感密碼可能被黑客攻破。

我們還提到了重要的 HTTP 方法,以及我們如何使用自定義頭髮送請求。如果您想了解requests模塊的更多信息,您可以訪問其編寫良好的 請求文檔 。


原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/255129.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:15
下一篇 2024-12-15 12:15

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29

發表回復

登錄後才能評論