為HTTP而生的requests庫,縱橫江湖難逢敵手

来源:https://www.cnblogs.com/kiwiblog/p/18057465
-Advertisement-
Play Games

既然Python是一門全球流行的語言,那麼對於網路通信的HTTP的支持肯定也是非常的優秀的。Python中原生的urllib模塊也有對HTTP的支持,雖然也可以用來發送 HTTP 請求,但使用起來相對繁瑣,並且 API 設計不夠直觀。 requests 庫的出現填補了 Python 在 HTTP 請 ...


既然Python是一門全球流行的語言,那麼對於網路通信的HTTP的支持肯定也是非常的優秀的。Python中原生的urllib模塊也有對HTTP的支持,雖然也可以用來發送 HTTP 請求,但使用起來相對繁瑣,並且 API 設計不夠直觀。

requests 庫的出現填補了 Python 在 HTTP 請求方面的不足,簡化了開發者的工作流程,讓他們可以更加專註於業務邏輯的實現,而不用過多關註底層的 HTTP 請求細節。同時,requests 的清晰文檔和社區活躍也使得這個庫成為 Python 社區中最受歡迎的 HTTP 請求庫之一。

毫不誇張的說,requests就是為HTTP而生的,在Python領域難逢敵手。

requests是什麼

requests 是一個非常流行的 HTTP 庫,它提供了簡潔、易用的 API 介面,用於發送各種類型的 HTTP 請求並處理響應。requests 庫可以幫助開發者使用 Python 進行網路通信,與 Web 服務進行交互,獲取數據並處理返回的響應內容。

以下是聽說的一些他的強大功能:

  1. 支持多種 HTTP 請求方法:requests 庫支持常見的 HTTP 請求方法,如 GET、POST、PUT、DELETE 等,開發者可以輕鬆地發送不同類型的請求。
  2. 簡潔的 API 介面:requests 的設計理念是“用戶友好、易用性優先”,提供了簡潔直觀的介面,讓開發者可以快速上手,並且代碼易讀易維護。
  3. 請求和響應自動處理:requests 可以自動處理請求和響應的細節,如自動添加請求頭、處理重定向、管理 cookie 等,簡化了開發過程。
  4. 文件上傳和下載支持:requests 支持文件的上傳和下載操作,可以方便地處理文件相關的 HTTP 請求。
  5. 會話管理:requests 提供了會話對象,可以保持持久性會話,跨請求共用 cookies,而不用重覆設置。
  6. SSL 驗證:requests 支持 SSL 驗證,確保請求的安全性。
    當然,這個功能聽著實在太抽象,所以需要你深入去瞭解他。

而我用一句話概況requests就是:requests一個非常優秀、受歡迎的HTTP庫。

requests的官網網站以及源碼地址:

官網網站:requests.readthedocs.io
源碼地址:github.com/psf/requests

安裝requests

要安裝requests包,可以使用Python的包管理器(如pip)在命令行中運行以下命令:

pip install requests

使用requests

安裝完成後,在 Python 腳本中引入 requests 模塊:

import requests

GET方法

接下來就可以使用 requests 發送 HTTP 請求了。以下是一個簡單的示例,演示如何使用 requests 發送一個 GET 請求。

# 導入 requests 庫
import requests

# 定義請求的 URL
url = "https://jsonplaceholder.typicode.com/posts/1"

# 發送 GET 請求
response = requests.get(url)

# 檢查響應狀態碼
if response.status_code == 200:
    # 輸出一些請求信息
    print(f"請求 URL: {url}")
    print(f"請求狀態碼: {response.status_code}")
    print("響應頭信息:")
    for key, value in response.headers.items():
        print(f"  {key}: {value}")
    print("")

    # 輸出響應內容
    print("響應內容:")
    print(response.text)  # 使用 text 屬性獲取響應內容(字元串形式)

    # 如果響應是 JSON 格式,也可以直接獲取為 JSON 數據
    json_data = response.json()
    print("響應 JSON 數據:")
    print(json_data)
else:
    print(f"請求失敗,狀態碼: {response.status_code}")

以上代碼中,我們首先導入 requests 模塊,然後使用 requests.get() 方法發送一個 GET 請求,指定了目標 URL。請求發送完畢後,可以通過 response 對象獲取到響應內容,使用 response.text 可以獲得響應的文本內容。當然URL地址可以替換成任意你想要的地址,我上面只是弄個實例。

除了 GET 請求,requests 還支持其他 HTTP 請求方法,如 POST、PUT、DELETE 等。

POST方法

# 導入 requests 庫
import requests

# 定義請求的 URL
url = 'https://jsonplaceholder.typicode.com/posts'

# 定義要發送的 JSON 數據
data = {
    'name': 'alittle',
    'body-length': 180,
    'company': 'home'
}

# 發送 POST 請求
response = requests.post(url, json=data)

# 檢查響應狀態碼
if response.status_code == 201:  # 201 表示創建成功
    print('創建成功,返回數據如下:')
    print(response.json())  # 輸出響應內容
else:
    print('請求失敗,狀態碼:', response.status_code)

大家可以看到,在上面的例子中,我們使用 requests.post() 方法發送一個 POST 請求,同時傳遞了一個 data 參數,用於設置 POST 請求的數據。

除了 GET 和 POST 請求,requests 還支持其他功能,如設置請求頭、處理響應、上傳文件、代理設置等。具體使用方法可以參考 requests 官方文檔,裡面包含了詳細的 API 參考和示例。
以上是一些非常簡單的 requests 庫的使用例子,主要是為了讓大家對這個庫的使用有一個大概的印象。

requests的相關函數

以下我總結的一些比較常用的一些requests庫的方法。

函數名 解釋
requests.get() 發送GET請求
requests.post() 發送POST請求
requests.put() 發送PUT請求
requests.delete() 發送DELETE請求
requests.head() 發送HEAD請求
requests.options() 發送OPTIONS請求
requests.patch() 發送PATCH請求
requests.request() 發送自定義請求方法
requests.Session() 創建一個持久性會話對象,可以跨請求保持某些參數
requests.cookies Response 對象的 cookies 屬性,用於訪問響應的 cookies
requests.getproxies() 獲取當前系統的代理信息
requests.adapters 適配器,用於發送請求和接收響應

更多精彩內容,請關註同名公眾:一點sir(alittle-sir)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在微服務架構或者分散式系統中,客戶端如何捕捉服務端的異常?這裡說的客戶端指調用方、服務端指被調用方,它們通常運行在不同的進程之中,這些進程可能運行在同一臺伺服器,也可能運行在不同的伺服器,甚至不同的數據機房;其使用的技術棧可能相同,也可能存在很大的差異。 ...
  • 什麼是訂單履約系統? 訂單履約系統用來管理從接收客戶訂單到將商品送達客戶手中的全過程。 它連接了上游交易(客戶在銷售平臺下單環)和下游倉儲配送(如庫存管理、物流配送),確保信息流順暢、操作協同,提升整個供應鏈的效率和響應速度。 系統定位 訂單履約系統的目標是讓訂單處理更快、更清晰,提高客戶體驗。 履 ...
  • Spring Boot允許外部化項目配置,以便您可以在不同的環境中使用相同的應用程式代碼。您可以使用各種外部配置源,包括Java屬性文件、YAML文件、環境變數和命令行參數。 屬性值可以通過使用@Value註釋直接註入到bean中,通過Spring的環境抽象進行訪問,或者通過@Configurati ...
  • druid-spring-boot-3-starter目前最新版本是1.2.20,雖然適配了SpringBoot3,但缺少自動裝配的配置文件,會導致載入時報載入驅動異常。 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-sp ...
  • 獨立樣本T檢驗適用於比較兩組獨立樣本的均值差異,而配對T檢驗則適用於比較同一組樣本在不同條件下的均值差異。在Python中,我們可以利用scipy庫進行T檢驗的實現和結果判斷。通過比較P值與顯著性水平,我們可以判斷兩組樣本均值是否存在顯著差異。T值的大小也對判斷兩組樣本均值差異的統計學意義起著重要作... ...
  • STL STL提供了六大組件,彼此之間可以組合套用,這六大組件分別是:容器、演算法、迭代器、仿函數、適配器、空間配置器。 數據結構和容器管理:STL 提供了多種數據結構和容器,如向量(vector)、鏈表(list)、集合(set)、映射(map)等。這些容器可以幫助程式員方便地存儲和管理數據,根據需 ...
  • import java.awt.Color; import java.awt.Font; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Lis ...
  • 介面 在 Java 中,實現抽象的另一種方式是使用介面。 介面定義 介面是一個完全抽象的類,用於將具有空方法體的相關方法分組: // 介面 interface Animal { public void animalSound(); // 介面方法(沒有具體實現體) public void run() ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...