Python Requests 庫:從安裝到精通

摘要

本文詳細介紹 Python Requests 庫的安裝與使用,通過常見示例讓你輕松掌握。

一、引言

在當今的互聯網時代,與各種 Web 服務進行交互是非常常見的需求。Python 作為一門功能強大且易于學習的編程語言,提供了許多用于網絡請求的庫,其中 Requests 庫因其簡潔易用的 API 而備受開發者青睞。Requests 庫允許你發送 HTTP 請求,與 Web 服務器進行數據交互,無論是獲取網頁內容、提交表單數據還是調用 API 接口,它都能輕松勝任。本文將詳細介紹 Requests 庫的安裝方法以及各種使用場景,幫助你快速掌握并精通這個實用的庫。

二、安裝 Requests 庫

Requests 庫并不是 Python 的內置庫,因此在使用之前需要先進行安裝。以下是幾種常見的安裝方式:

2.1 使用 pip 安裝

pip 是 Python 的包管理工具,大多數 Python 環境都會默認安裝。打開終端或命令提示符,執行以下命令即可安裝 Requests 庫:

pip install requests

如果你使用的是 Python 3,可能需要使用 pip3 命令:

pip3 install requests

安裝完成后,你可以通過以下代碼驗證是否安裝成功:

import requests
print(requests.__version__)

如果沒有報錯并能正常輸出版本號,說明 Requests 庫已經成功安裝。

2.2 使用 Anaconda 安裝

如果你使用的是 Anaconda 環境,可以使用 conda 命令來安裝 Requests 庫:

conda install requests

三、基本使用

3.1 發送 GET 請求

GET 請求是最常見的 HTTP 請求類型,用于從服務器獲取資源。以下是一個簡單的示例:

import requests# 發送 GET 請求
response = requests.get('https://www.example.com')# 檢查響應狀態碼
if response.status_code == 200:# 打印響應內容print(response.text)
else:print(f"請求失敗,狀態碼:{response.status_code}")

在這個示例中,我們使用 requests.get() 方法發送了一個 GET 請求,并將響應存儲在 response 對象中。通過檢查 response.status_code 可以判斷請求是否成功,response.text 屬性可以獲取響應的文本內容。

3.2 發送帶參數的 GET 請求

有時候,我們需要在 GET 請求中傳遞參數。可以通過 params 參數來實現:

import requests# 定義參數
params = {'key1': 'value1','key2': 'value2'
}# 發送帶參數的 GET 請求
response = requests.get('https://www.example.com/api', params=params)# 打印請求的 URL
print(response.url)

在這個示例中,params 是一個字典,包含了要傳遞的參數。requests.get() 方法會自動將這些參數添加到 URL 中。

3.3 發送 POST 請求

POST 請求通常用于向服務器提交數據。以下是一個發送 POST 請求的示例:

import requests# 定義要提交的數據
data = {'username': 'john_doe','password': '123456'
}# 發送 POST 請求
response = requests.post('https://www.example.com/login', data=data)# 打印響應內容
print(response.text)

在這個示例中,我們使用 requests.post() 方法發送了一個 POST 請求,并通過 data 參數傳遞了要提交的數據。

3.4 發送 JSON 數據

如果需要發送 JSON 數據,可以使用 json 參數:

import requests
import json# 定義 JSON 數據
data = {'name': 'Alice','age': 25
}# 發送包含 JSON 數據的 POST 請求
response = requests.post('https://www.example.com/api', json=data)# 打印響應內容
print(response.text)

在這個示例中,requests.post() 方法會自動將字典轉換為 JSON 格式,并設置 Content-Typeapplication/json

四、處理響應

4.1 獲取響應狀態碼

響應狀態碼表示請求的結果。常見的狀態碼有 200 表示成功,404 表示未找到資源,500 表示服務器內部錯誤等。可以通過 response.status_code 屬性獲取響應狀態碼:

import requestsresponse = requests.get('https://www.example.com')
print(response.status_code)

4.2 獲取響應頭

響應頭包含了關于響應的一些元信息,如服務器類型、內容類型等。可以通過 response.headers 屬性獲取響應頭:

import requestsresponse = requests.get('https://www.example.com')
print(response.headers)

4.3 獲取響應內容

除了使用 response.text 獲取文本內容外,還可以使用 response.json() 方法將響應內容解析為 JSON 格式:

import requestsresponse = requests.get('https://www.example.com/api/data')
if response.status_code == 200:data = response.json()print(data)

五、高級用法

5.1 會話管理

requests.Session() 可以創建一個會話對象,用于在多個請求之間保持會話狀態,如 Cookie 等:

import requests# 創建會話對象
session = requests.Session()# 發送登錄請求
login_data = {'username': 'john_doe','password': '123456'
}
session.post('https://www.example.com/login', data=login_data)# 發送需要登錄才能訪問的請求
response = session.get('https://www.example.com/dashboard')
print(response.text)

在這個示例中,使用 session 對象發送的請求會自動攜帶之前登錄時獲取的 Cookie。

5.2 超時設置

為了避免請求長時間無響應,可以設置超時時間:

import requeststry:response = requests.get('https://www.example.com', timeout=5)print(response.text)
except requests.Timeout:print("請求超時")

在這個示例中,timeout=5 表示如果請求在 5 秒內沒有得到響應,就會拋出 requests.Timeout 異常。

5.3 代理設置

如果需要使用代理服務器發送請求,可以通過 proxies 參數設置代理:

import requestsproxies = {'http': 'http://proxy.example.com:8080','https': 'http://proxy.example.com:8080'
}response = requests.get('https://www.example.com', proxies=proxies)
print(response.text)

六、總結

Requests 庫是 Python 中一個非常實用的 HTTP 請求庫,它提供了簡潔易用的 API,使得與 Web 服務器進行交互變得輕而易舉。通過本文的介紹,你已經了解了 Requests 庫的安裝方法以及各種常見的使用場景,包括發送 GET、POST 請求,處理響應,以及一些高級用法。希望你能在實際項目中靈活運用這些知識,提高開發效率。

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

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

相關文章

Manus技術架構、實現內幕及分布式智能體項目實戰

Manus技術架構、實現內幕及分布式智能體項目實戰 模塊一: 剖析Manus分布式多智能體全生命周期、九大核心模塊及MCP協議,構建低幻覺、高效且具備動態失敗處理能力的Manus系統。 模塊二: 解析Manus大模型Agent操作電腦的原理與關鍵API&#xf…

C算術運算符 printf輸出格式 字符指針打印輸出 使用scanf函數進行輸入

一 算術運算符 加, 一元取正 - 減, 一元取負 * 乘 / 除 % 求余 -- 自減1 自加1 邏輯運算符 && 邏輯與 || 邏輯或 ! 邏輯非 關系運算符 > 大于 > 大于等于 < 小于 < 小于等于 等于 ! 不等于 位運算符號 & 按位與 | 按位或 ^ 按位異或…

STM32中Hz和時間的轉換

目錄 一、常見的頻率單位及其轉換 二、計算公式 三、STM32中定時器的應用 四、例子 一、常見的頻率單位及其轉換 赫茲&#xff08;Hz&#xff09;是頻率的國際單位&#xff0c;表示每秒鐘周期性事件發生的次數。 1 kHz&#xff08;千赫茲&#xff09; 1,000 Hz1 MHz&#…

《分布式軟總線:不同頻段Wi-Fi環境下設備發現兼容性難題》

分布式軟總線技術作為實現設備互聯互通的關鍵&#xff0c;正逐漸成為構建萬物互聯世界的基石。然而&#xff0c;當分布式軟總線面臨不同頻段Wi-Fi環境時&#xff0c;設備發現的兼容性問題成為了阻礙其廣泛應用的一大挑戰。這一問題不僅影響著用戶體驗&#xff0c;也制約著分布式…

MCP(Model Context Protocol 模型上下文協議)科普

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文協議&#xff09;是由人工智能公司 Anthropic 于 2024年11月 推出的開放標準協議&#xff0c;旨在為大型語言模型&#xff08;LLM&#xff09;與外部數據源、工具及服務提供標準化連接&#xff0c;從而提升AI在實際…

【mongodb】數據庫操作

目錄 1. 查看所有數據庫2. 切換到指定數據庫&#xff08;若數據庫不存在&#xff0c;則創建&#xff09;3. 查看當前使用的數據庫4. 刪除當前數據庫5.默認數據庫 1. 查看所有數據庫 1.show dbs2.show databases 2. 切換到指定數據庫&#xff08;若數據庫不存在&#xff0c;則…

ICPR-2025 | 讓機器人在未知環境中 “聽懂” 指令精準導航!VLTNet:基于視覺語言推理的零樣本目標導航

作者&#xff1a;Congcong Wen, Yisiyuan Huang, Hao Huang ,Yanjia Huang, Shuaihang Yuan, YuHao, HuiLin and Yi Fang 單位&#xff1a;紐約大學阿布扎比分校具身人工智能與機器人實驗室&#xff0c;紐約大學阿布扎比分校人工智能與機器人中心&#xff0c;紐約大學坦登工程…

基于DeepSeek的考研暑假日志分析

注&#xff1a;我去年考研時寫了日志&#xff0c;大致記錄了我每天的主要活動。由于過于瑣碎&#xff0c;一直沒有翻看。突發奇想&#xff0c;現在利用deepseek總結其中規律。 從你的日志中可以總結出以下規律和活動興衰起落&#xff1a; ??一、學習活動規律與演變?? ??…

【刷題Day20】TCP和UDP

TCP 和 UDP 有什么區別&#xff1f; TCP提供了可靠、面向連接的傳輸&#xff0c;適用于需要數據完整性和順序的場景。 UDP提供了更輕量、面向報文的傳輸&#xff0c;適用于實時性要求高的場景。 特性TCPUDP連接方式面向連接無連接可靠性提供可靠性&#xff0c;保證數據按順序…

REST 架構詳解:從概念到應用的全面剖析

REST&#xff08;Representational State Transfer&#xff09;即表述性狀態轉移&#xff0c;是一種用于構建網絡應用程序的架構風格和設計理念&#xff0c;由計算機科學家羅伊?菲爾丁&#xff08;Roy Fielding&#xff09;在 2000 年提出。以下是關于它的詳細介紹&#xff1a…

藍橋杯之遞歸二

1.數的劃分 題目描述 將整數 nn 分成 kk 份&#xff0c;且每份不能為空&#xff0c;任意兩份不能相同(不考慮順序)。 例如&#xff1a;n7&#xff0c;k3n7&#xff0c;k3&#xff0c;下面三種分法被認為是相同的。 1&#xff0c;1&#xff0c;5;1&#xff0c;5&#xff0c;…

LeetCode(Hot.2)—— 49.字符異位詞分組題解

Problem: 49. 字母異位詞分組 字母異位詞的定義是&#xff1a;兩個單詞的字母組成一樣&#xff0c;但順序可以不同&#xff0c;比如 eat、tea 和 ate 就是一個組的。 思路 將每個字符串按字母排序&#xff0c;把排序后的字符串作為 key&#xff0c;相同 key 的放在一個 list 中…

為什么信號完整性對于高速連接器設計至關重要?

外部連接器通過在各種電子元件和系統之間可靠地傳輸數據而不損失保真度來保持信號完整性。在本文中&#xff0c;我們將討論信號完整性的重要性&#xff0c;回顧高速部署挑戰&#xff0c;并重點介紹各種連接器設計策略&#xff0c;以防止失真和降級。 了解連接器信號完整性挑戰…

得物官網sign簽名逆向分析

打開得物官網&#xff0c;點擊鞋類&#xff0c;可以看到請求 直接搜sign function p(e) {return f()("".concat(e ? s()(e).sort().reduce(function(t, n) {return "".concat(t).concat(n).concat(e[n])}, "") : "", "048a9…

Ubuntu 安裝WPS Office

文章目錄 Ubuntu 安裝WPS Office下載安裝文件安裝WPS問題1.下載缺失字體文件2.安裝缺失字體 Ubuntu 安裝WPS Office 下載安裝文件 需要到 WPS官網 下載最新軟件&#xff0c;比如wps-office_12.1.0.17900_amd64.deb 安裝WPS 執行命令進行安裝 sudo dpkg -i wps-office_12.1…

javaSE.判空包裝類

判空包裝類Optional&#xff0c;這個類可以很有效的處理空指針問題 空指針異常&#x1f447; 特判null&#x1f447; Optional類可以更加優雅地處理這種問題&#x1f447;&#x1f447; ofNullable&#x1f447; isPresent isEmpty &#x1f447; &#x1f447; 包裝之后&…

使用 vcpkg 構建支持 HTTPS 的 libcurl 并解決常見鏈接錯誤

適用環境&#xff1a;Windows 10/11 Visual Studio 2022 CMake ≥ 3.20 目標讀者&#xff1a;希望在 C 項目中輕松調用 HTTPS&#xff08;GET/POST/PUT/DELETE&#xff09;&#xff0c;又被 LNK20xx 鏈接錯誤困擾的開發者 目錄 為什么選 vcpkg 與 libcurl用 vcpkg 安裝帶 SS…

ISO26262-淺談用例導出方法和測試方法

目錄 1 摘要2 測試方法3 測試用例導出方法4 測試方法與用例導出方法的差異和聯系5 結論 1 摘要 ISO26262定義了測試方法和用例導出方法&#xff0c;共同保證產品的開發質量。但在剛開始學習ISO26262的時候&#xff0c;又不是非常清晰地理解它倆的區別和聯系。本文主要對它倆的…

RoBoflow數據集的介紹

https://public.roboflow.com/object-detection&#xff08;該數據集的網址&#xff09; 可以看到一些基本情況 如果我們想要下載&#xff0c;直接點擊 點擊圖像可以看到一些基本情況 可以點擊紅色箭頭所指&#xff0c;右邊是可供選擇的一些yolo模型的格式 如果你想下載…

基于CFSSL構建高可用ETCD集群全指南(含TLS證書管理)

基于CFSSL構建高可用ETCD集群全指南&#xff08;含TLS證書管理&#xff09; 摘要&#xff1a;本文深入講解使用CFSSL工具簽發TLS證書&#xff0c;并部署生產級高可用ETCD集群的完整流程。涵蓋證書全生命周期管理、集群配置優化及安全加固方案&#xff0c;適用于Kubernetes、分…