Python網(wǎng)絡(luò)請(qǐng)求庫(kù)requests的10個(gè)基本用法
引言
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,HTTP請(qǐng)求成為開(kāi)發(fā)者們?nèi)粘9ぷ髦胁豢苫蛉钡囊徊糠?。Python語(yǔ)言以其簡(jiǎn)潔易用的特點(diǎn),成為眾多開(kāi)發(fā)者首選的編程語(yǔ)言之一。而requests庫(kù)作為Python中最受歡迎的HTTP客戶(hù)端庫(kù)之一,更是大大簡(jiǎn)化了發(fā)送HTTP請(qǐng)求的過(guò)程。本文將詳細(xì)介紹如何利用requests庫(kù)執(zhí)行各種類(lèi)型的HTTP請(qǐng)求,從基礎(chǔ)的GET請(qǐng)求到復(fù)雜的認(rèn)證、文件上傳等高級(jí)功能。
發(fā)送GET請(qǐng)求
首先,你需要安裝requests庫(kù)。打開(kāi)命令行工具,輸入以下命令:

安裝完成后,就可以開(kāi)始使用了。最簡(jiǎn)單的GET請(qǐng)求如下:

這里的response.text會(huì)打印出響應(yīng)的內(nèi)容。如果你想獲取特定信息,可以解析返回的數(shù)據(jù)。比如,如果返回的是JSON格式的數(shù)據(jù),可以用response.json()方法將其轉(zhuǎn)換為Python字典。
獲取頁(yè)面的二進(jìn)制數(shù)據(jù)
有時(shí)候我們需要獲取圖片或文件等二進(jìn)制數(shù)據(jù),這時(shí)可以使用requests.get方法并指定stream=True來(lái)實(shí)現(xiàn)。

這段代碼會(huì)將圖片下載到當(dāng)前目錄下。
添加查詢(xún)參數(shù)
很多時(shí)候,我們需要向URL添加查詢(xún)參數(shù)。這可以通過(guò)傳遞一個(gè)字典給params參數(shù)來(lái)實(shí)現(xiàn):

這里httpbin.org是一個(gè)測(cè)試HTTP請(qǐng)求的好地方。
發(fā)送POST請(qǐng)求
發(fā)送POST請(qǐng)求也很簡(jiǎn)單,只需要調(diào)用requests.post方法,并傳入要發(fā)送的數(shù)據(jù)即可:

處理JSON數(shù)據(jù)
當(dāng)服務(wù)器返回JSON格式的數(shù)據(jù)時(shí),我們可以直接使用response.json()來(lái)解析它:

這段代碼會(huì)打印出GitHub API返回的所有事件類(lèi)型。
設(shè)置自定義Header
如果你需要設(shè)置HTTP頭部信息,可以通過(guò)headers參數(shù)來(lái)實(shí)現(xiàn):

設(shè)置User-Agent可以幫助我們模擬瀏覽器行為。
發(fā)送帶認(rèn)證信息的請(qǐng)求
有時(shí)我們需要訪問(wèn)需要認(rèn)證的網(wǎng)站或API。requests庫(kù)提供了多種認(rèn)證方式,包括基本認(rèn)證(Basic Auth)和OAuth等。下面我們來(lái)看一個(gè)基本認(rèn)證的例子:

在這個(gè)例子中,我們使用了HTTPBasicAuth類(lèi)來(lái)提供用戶(hù)名和密碼進(jìn)行認(rèn)證。
發(fā)送帶有表單數(shù)據(jù)的請(qǐng)求
當(dāng)我們需要提交表單數(shù)據(jù)時(shí),可以使用requests.post方法,并通過(guò)data參數(shù)傳遞字典形式的數(shù)據(jù):

這段代碼會(huì)發(fā)送包含名字和郵箱的POST請(qǐng)求。
發(fā)送帶有文件的請(qǐng)求
在上傳文件時(shí),可以使用requests.post方法,并通過(guò)files參數(shù)傳遞文件對(duì)象:

這段代碼會(huì)上傳名為example.txt的文件到服務(wù)器。
處理重定向和超時(shí)
在處理網(wǎng)絡(luò)請(qǐng)求時(shí),我們可能會(huì)遇到重定向和超時(shí)問(wèn)題。requests庫(kù)提供了相應(yīng)的參數(shù)來(lái)處理這些問(wèn)題。
處理重定向:

如果不需要自動(dòng)重定向,可以設(shè)置allow_redirects=False。
處理超時(shí):

這段代碼設(shè)置了請(qǐng)求的超時(shí)時(shí)間為5秒,如果超過(guò)這個(gè)時(shí)間沒(méi)有響應(yīng),則會(huì)拋出Timeout異常。
實(shí)戰(zhàn)案例:獲取天氣信息
假設(shè)我們需要獲取某個(gè)城市的天氣信息,可以使用OpenWeatherMap提供的API來(lái)實(shí)現(xiàn)。以下是具體的步驟:
1. 注冊(cè)一個(gè)OpenWeatherMap賬戶(hù)并獲取API密鑰。2. 使用requests庫(kù)發(fā)送GET請(qǐng)求獲取天氣數(shù)據(jù)。
下面是完整的代碼示例:

在這段代碼中,我們使用了requests.get方法發(fā)送GET請(qǐng)求,并通過(guò)response.json()方法解析返回的JSON數(shù)據(jù)。然后,我們提取了溫度和天氣描述信息并打印出來(lái)。
總結(jié)
本文介紹了如何使用requests庫(kù)執(zhí)行各種類(lèi)型的HTTP請(qǐng)求,包括發(fā)送GET/POST請(qǐng)求、處理JSON數(shù)據(jù)、設(shè)置自定義Header、發(fā)送帶認(rèn)證信息的請(qǐng)求、上傳文件、處理重定向和超時(shí)等問(wèn)題。通過(guò)實(shí)戰(zhàn)案例展示了如何利用requests獲取天氣信息,希望這些知識(shí)能夠幫助你在實(shí)際開(kāi)發(fā)過(guò)程中更加高效地處理HTTP請(qǐng)求。
以上就是Python網(wǎng)絡(luò)請(qǐng)求庫(kù)requests的10個(gè)基本用法的詳細(xì)內(nèi)容,更多關(guān)于Python requests基本用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解appium+python 啟動(dòng)一個(gè)app步驟
這篇文章主要介紹了詳解appium+python 啟動(dòng)一個(gè)app步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
python連接sql?server數(shù)據(jù)庫(kù)的方法實(shí)戰(zhàn)
當(dāng)我們用Python來(lái)編寫(xiě)網(wǎng)站,必須要能夠通過(guò)python操作數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于python連接sql?server數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
Python實(shí)現(xiàn)遍歷子文件夾并將文件復(fù)制到不同的目標(biāo)文件夾
這篇文章主要介紹了如何基于Python語(yǔ)言實(shí)現(xiàn)遍歷多個(gè)子文件夾,將每一個(gè)子文件夾中大量的文件,按照每一個(gè)文件的文件名稱(chēng)的特點(diǎn)復(fù)制到不同的目標(biāo)文件夾中,感興趣的可以了解下2023-08-08
使用PyCharm調(diào)試程序?qū)崿F(xiàn)過(guò)程
這篇文章主要介紹了使用PyCharm調(diào)試程序?qū)崿F(xiàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
python實(shí)現(xiàn)關(guān)鍵詞提取的示例講解
下面小編就為大家分享一篇python實(shí)現(xiàn)關(guān)鍵詞提取的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python3獲取當(dāng)前文件的上一級(jí)目錄實(shí)例
下面小編就為大家分享一篇python3獲取當(dāng)前文件的上一級(jí)目錄實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python的類(lèi)變量和成員變量用法實(shí)例教程
這篇文章主要介紹了python的類(lèi)變量和成員變量用法,是學(xué)習(xí)Python程序設(shè)計(jì)所必須牢固掌握的,需要的朋友可以參考下2014-08-08

