淺談Python庫之?Requests

一、?Requests的介紹

????????Requests 是一個簡單易用的 HTTP 庫,用于發送各種 HTTP 請求。它由 Kenneth Reitz 創建,并廣泛用于 Python 社區中。

二、?Requests的特點

1、人性化的 API:簡潔的接口使得編寫請求代碼變得簡單直觀。

2、跨平臺:在 Windows、OS X、Linux 等多種操作系統上都可以使用。

3、只包含核心功能:專注于提供基本的 HTTP 請求功能,易于擴展。

4、自動處理 Cookies:自動處理客戶端的 Cookies。

5、自動處理重定向:遵循 HTTP 重定向。

6、SSL 驗證:支持 HTTPS 請求,并默認驗證 SSL 證書。

三、Requests的安裝使用

安裝 Requests 庫

Requests 庫不是 Python 的標準庫,因此需要單獨安裝。可以通過 pip 安裝:

pip install requests

使用 Requests 庫

以下是使用 Requests 庫發送 HTTP 請求的基本步驟:

1. 發送 GET 請求
import requests# 發送 GET 請求
response = requests.get('https://api.github.com')# 獲取響應內容
data = response.text# 打印響應內容
print(data)

2. 發送 POST 請求

import requests# 發送 POST 請求
response = requests.post('https://httpbin.org/post', data={'key': 'value'})# 獲取響應內容
data = response.json()  # 響應內容為 JSON 格式# 打印響應內容
print(data)

3. 處理響應

Requests 庫提供了多種方法來處理響應:

  • response.text:返回響應內容作為 Unicode 字符串。
  • response.content:返回響應內容作為字節序列。
  • response.json():將響應內容解析為 JSON 格式。
# 假設響應內容為 JSON 格式
data = response.json()
print(data)

4. 發送帶有 Headers 的請求

import requestsheaders = {'User-Agent': 'my-app/0.0.1','Accept': 'application/json',
}response = requests.get('https://api.github.com', headers=headers)

5. 發送帶有認證信息的請求
import requestsusername = 'user'
password = 'pass'response = requests.get('https://api.github.com', auth=(username, password))

6. 發送帶有超時的請求
import requeststry:response = requests.get('https://api.github.com', timeout=0.01)
except requests.exceptions.Timeout:print("請求超時")

四、Requests的詳細使用

以下是一些 Python Requests 庫的高級示例代碼,這些示例展示了如何使用 Requests 庫進行更復雜的操作,如會話管理、文件上傳、代理設置、異常處理等。

1. 會話管理

使用會話(Session)可以在多個請求之間保持某些參數,比如 cookies。

import requests# 創建一個會話對象
with requests.Session() as session:session.headers.update({'x-requested-with': 'XMLHttpRequest'})response = session.get('https://api.example.com/data')print(response.text)

2. 文件上傳

使用 Requests 上傳文件。

import requestsurl = 'https://httpbin.org/post'
files = {'file': open('example.txt', 'rb')}response = requests.post(url, files=files)print(response.text)

3. 代理設置

通過代理發送請求。

import requestsproxies = {'http': 'http://10.10.1.10:3128','https': 'http://10.10.1.10:1080',
}response = requests.get('https://api.example.com/data', proxies=proxies)
print(response.text)

4. 異常處理

處理請求過程中可能出現的異常。

import requests
from requests.exceptions import HTTPErrorurl = 'https://api.example.com/data'try:response = requests.get(url)response.raise_for_status()  # 將捕獲HTTP錯誤
except HTTPError as http_err:print(f'HTTP error occurred: {http_err}')
except Exception as err:print(f'Other error occurred: {err}')
else:print(response.text)

5. JSON 數據請求

發送 JSON 數據并解析響應的 JSON。

import requests
import jsonurl = 'https://httpbin.org/post'
payload = {'key1': 'value1', 'key2': 'value2'}response = requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json'})
data = response.json()print(data)

6. 流式請求

用于處理大量數據的流式請求。

import requestsurl = 'https://files.pythonhosted.org/packages/source/r/requests/requests-2.25.1.tar.gz'
response = requests.get(url, stream=True)with open('requests-2.25.1.tar.gz', 'wb') as file:for chunk in response.iter_content(chunk_size=1024):file.write(chunk)

7. 自定義認證

使用自定義認證方式,例如基本認證。

import requests
from requests.auth import HTTPBasicAuthurl = 'https://api.example.com/data'
response = requests.get(url, auth=HTTPBasicAuth('username', 'password'))print(response.text)

8. 使用 SSL 證書

當需要驗證 SSL 證書時,可以指定證書路徑。

import requestsurl = 'https://api.example.com/data'
response = requests.get(url, cert='/path/to/certfile')print(response.text)

五、注意事項

  • Requests 庫默認不發送?Accept?頭部,如果你需要處理 JSON 數據,可能需要手動設置。
  • 出于安全考慮,默認情況下 Requests 會驗證 SSL 證書。如果需要跳過 SSL 驗證(不推薦),可以設置?verify=False

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62371.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62371.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在vue中使用ECharts

一. 打開ECharts官網,點擊快速入門 下面是ECharts官網的鏈接 https://echarts.apache.org/ 二.在vue中使用 1.首先先引入Echarts js文件 如下圖,下面的第一張圖片是官網的實現,第二章圖片是我根據官網的實現 2.給ECharts 創建一個DOM容器 3. 使用ec…

網絡原理之 IP 協議

目錄 1. IP 協議報文格式 2. 網段劃分 3. 地址管理 1) 動態分配 2) NAT 機制 (網絡地址轉換) 3) IPv6 4. 路由選擇 1. IP 協議報文格式 IP 協議是網絡層的重點協議。 網絡層要做的事情,主要就是兩方面: 1) 地址管理 制定一系列的規則&#xff…

HyperMesh CFD功能詳解:后處理功能Part 2

Clips Clips 按鈕包含兩個工具。Box Clip用于空間上的裁剪,Scalar Clip可以根據物理量的范圍裁剪。 示例:Box Clips 裁剪 示例:Scalar Clips 裁剪 通過裁剪,僅顯示density范圍是10~20的等值面 示例:顯示效果控制 部分透…

Java項目實戰II基于微信小程序的跑腿系統(開發文檔+數據庫+源碼)

目錄 一、前言 二、技術介紹 三、系統實現 四、核心代碼 五、源碼獲取 全棧碼農以及畢業設計實戰開發,CSDN平臺Java領域新星創作者,專注于大學生項目實戰開發、講解和畢業答疑輔導。獲取源碼聯系方式請查看文末 一、前言 在快節奏的現代生活中&…

【機器學習與數據挖掘實戰案例01】基于支持向量回歸的市財政收入分析

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?機器學習與數據挖掘實戰 ? ? ? 機器學習是人工智能的一個分支,專注于讓計算機系統通過數據學習和改進。它利用統計和計算方法,使模型能夠從數據中自動提取特征并做出預測或決策。數據挖掘則是從大型數…

windows下nacos啟動報錯:java.lang.unsatisfiedLinkError: C:\USers\亂碼AppData\xxx.dll

問題 看了許多別的帖子,大家都是因為缺少dll包,下載安裝 Microsoft Visual C 2015 Redistributable 就可以。但我試過了不行。思來想去,之前正常的時候用的JDK版本是17,后面別的項目用1.8給切換回來了。然后嘗試配置環境變量將JD…

JavaEE 【知識改變命運】03 多線程(3)

文章目錄 多線程帶來的風險-線程安全線程不安全的舉例分析產出線程安全的原因:1.線程是搶占式的2. 多線程修改同一個變量(程序的要求)3. 原子性4. 內存可見性5. 指令重排序 總結線程安全問題產生的原因解決線程安全問題1. synchronized關鍵字…

并發在前端中的應用?

?并發在前端中的應用主要體現在處理多個請求和優化頁面加載速度方面?。前端并發處理通常涉及在極短時間內發送多個數據請求,例如在頁面渲染時同時請求多個數據。通過并發處理,可以顯著減少頁面加載時間,提升用戶體驗。 前端并發處理的具體…

【力扣】409.最長回文串

問題描述 思路解析 因為同時包含大小寫字母,直接創建個ASCII表大小的桶來標記又因為是要回文子串,所以偶數個數的一定可以那么同時,對于出現奇數次數的,我沒需要他們的次數-1,變為偶數,并且可以標記出現過…

計算機視覺在科學研究(數字化)中的實際應用

計算機視覺是一種利用計算機技術來解析和理解圖像和視頻的方法。.隨著計算機技術的不斷發展,計算機視覺被廣泛應用于科學研究領域,為科學家提供了無限的可能。 一、生命科學領域 在生命科學領域,計算機視覺被廣泛用于圖像識別、分類和測量等…

springboot381銀行客戶管理系統(論文+源碼)_kaic

摘 要 伴隨著信息技術與互聯網技術的不斷發展,人們進到了一個新的信息化時代,傳統管理技術性沒法高效率、容易地管理信息內容。為了實現時代的發展必須,提升管理高效率,各種各樣管理管理體系應時而生,各個領域陸續進到…

JMX 組件架構即詳解

JMX架構由三個主要組件構成: ?MBeans(Managed Beans)?:代表可管理的資源,是JMX的核心。MBean可以是Java類或接口,提供了管理操作的接口,如獲取系統信息、設置參數等。?MBeanServer?&#x…

LLMs之ICL:《Bayesian scaling laws for in-context learning》翻譯與解讀

LLMs之ICL:《Bayesian scaling laws for in-context learning》翻譯與解讀 導讀:這篇論文的核心議題是理解和建模大型語言模型(LLM)的上下文學習(ICL)能力。文章從貝葉斯學習的角度出發,提出了一…

基于單片機和測頻法的頻率計設計及proteus仿真

摘要: 傳感器廣泛應用在自動化測量中,該文利用 51 單片機 2 個 16 位定時器和測量頻率中的測頻法設計了測量方波的頻率計,并用LCD1602 液晶顯示頻率、 proteus 仿真,測試結果表明設計思路正確、誤差小。 關鍵詞: 單片機;測頻法;頻率計; proteus 1 概述 傳感器能感受到…

軟件漏洞印象

軟件漏洞印象 軟件安全性檢測 軟件安全靜態分析:學術界一度十分熱衷的偏理論性方法軟件漏洞動態挖掘,工程界普遍采用動態漏洞挖掘方式,即Fuzz技術,也稱為模糊測試 漏洞利用 vs. 漏洞修復 對于已發現的軟件漏洞 黑客會基于Meta…

計算機網絡 —— HTTPS 協議

前一篇文章:計算機網絡 —— HTTP 協議(詳解)-CSDN博客 目錄 前言 一、HTTPS 協議簡介 二、HTTPS 工作過程 1.對稱加密 2.非對稱加密 3.中間人攻擊 4.引入證書 三、HTTPS 常見問題 1.中間人能否篡改證書? 2.中間人能否調…

定點數的乘除運算

原碼一位乘法 乘積的符號由兩個數的符號位異或而成。(不參與運算)被乘數和乘數均取絕對值參與運算,看作無符號數。乘數的最低位為Yn: 若Yn1,則部分積加上被乘數|x|,然后邏輯右移一位;若Yn0&…

如何設置ChromeDriver路徑?

設置ChromeDriver路徑是為了讓Selenium能夠正確地調用Chrome瀏覽器進行自動化操作。以下是幾種設置ChromeDriver路徑的方法: 1. 系統環境變量 將ChromeDriver的路徑添加到系統的環境變量中,這樣在任何地方都可以直接調用ChromeDriver。 Windows系統&a…

數據挖掘:一、Weka軟件的基本操作

實驗目的和要求 了解Weka軟件的使用 實驗環境 Windows11 Weka3.8.6 實驗內容與過程 實驗內容 1、了解Weka使用的一般步驟 2、利用Weka,對數據集進行關聯規則挖掘及數據分類 3、記錄操作步驟、使用的數據、最終的結果 實驗過程 首先打開weka下載官網,選擇合適

【從零開始的LeetCode-算法】383. 贖金信

給你兩個字符串:ransomNote 和 magazine ,判斷 ransomNote 能不能由 magazine 里面的字符構成。 如果可以,返回 true ;否則返回 false 。 magazine 中的每個字符只能在 ransomNote 中使用一次。 示例 1: 輸入&#…