Python之 requests的使用(一)
?? requests的使用(一)
大家好,今天就來(lái)說(shuō)說(shuō)requests的基礎(chǔ)用法。requests是一個(gè)很實(shí)用的Python HTTP客戶端庫(kù),爬蟲和測(cè)試服務(wù)器響應(yīng)數(shù)據(jù)時(shí)經(jīng)常會(huì)用到,requests是Python語(yǔ)言的第三方的庫(kù),專門用于發(fā)送HTTP請(qǐng)求,使用起來(lái)比urllib簡(jiǎn)潔很多。
??1.準(zhǔn)備工作
首先呢,我們要確保我們已經(jīng)之前安裝requests庫(kù),如果沒(méi)有安裝,按照下面步驟按照庫(kù)。
?pip 安裝
無(wú)論是 Windows、Linux 還是 Mac,都可以通過(guò) pip 這個(gè)包管理工具來(lái)安裝。
在命令行下運(yùn)行如下命令即可完成 requests 庫(kù)的安裝:
pip3 install requests
這是最簡(jiǎn)單的安裝方式,推薦此種方法安裝。
?驗(yàn)證安裝
為了驗(yàn)證庫(kù)是否已經(jīng)安裝成功,可以在命令行下測(cè)試一下:
import requests res = requests.get('https://www.baidu.com/') print(res)
輸入如上內(nèi)容,如果什么錯(cuò)誤提示也沒(méi)有,那么就證明我們已經(jīng)成功安裝了 requests。
??2.實(shí)例引入
requests庫(kù)請(qǐng)求網(wǎng)頁(yè)用到的是get()方法,下面通過(guò)實(shí)例來(lái)看一下。
import requests res = requests.get('https://www.baidu.com/') print(type(res)) print(res) print(res.text) print(res.cookies)
這里我們調(diào)用get()方法實(shí)現(xiàn),得到一個(gè)response對(duì)象,然后分別輸出response的類型,狀態(tài)碼,內(nèi)容以及cookies。
使用get()方法成功實(shí)現(xiàn)一個(gè)get()請(qǐng)求這不算什么,更方便的請(qǐng)求還有其他的。比如post(),put()等等。
??3.get()請(qǐng)求
HTTP最常見(jiàn)的請(qǐng)求之一就是GET請(qǐng)求,下面我們首先先來(lái)了解一下利用requests構(gòu)建GET的方法
?基本實(shí)例
首先,我們構(gòu)建一個(gè)最簡(jiǎn)單的get請(qǐng)求,請(qǐng)求的鏈接如下,該網(wǎng)站會(huì)判斷如果用戶發(fā)起的的是get請(qǐng)求的話,它就會(huì)返回響應(yīng)的請(qǐng)求信息
import requests res = requests.get('http://httpbin.org/get') print(res.text)
運(yùn)行的結(jié)果如下:
{ "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.27.1", "X-Amzn-Trace-Id": "Root=1-637ae5d7-35da1bf57b139d152585d12a" }, "origin": "223.215.67.113", "url": "http://httpbin.org/get" }
可以發(fā)現(xiàn),我們成功發(fā)起了get請(qǐng)求,返回結(jié)果中包含請(qǐng)求頭,url,IP等信息。
那么,對(duì)于GET請(qǐng)求,如果我們想要附加額外信息,一般怎么添加呢?比如講,現(xiàn)在想添加兩個(gè)參數(shù),其中name是Tina,age是18。要構(gòu)造這個(gè)請(qǐng)求鏈接,是不是可以直接寫成:
r = requests.get('http://httpbin.org/get?name=Tina&age=18')
這樣也是可以的,我們還可以通過(guò)字典來(lái)構(gòu)造。利用params這個(gè)參數(shù)就好了。
import requests data = { 'name':'Tina', 'age':'18' } res = requests.get('http://httpbin.org/get',params = data) print(res.text)
運(yùn)行結(jié)果如下:
{ "args": { "age": "18", "name": "Tina" }, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.27.1", "X-Amzn-Trace-Id": "Root=1-637ae902-695483e87b26b3ad49d15df7" }, "origin": "223.215.67.113", "url": "http://httpbin.org/get?name=Tina&age=18" }
通過(guò)運(yùn)行結(jié)果判斷,請(qǐng)求的鏈接自動(dòng)變成了帶有后綴的鏈接。
另外,網(wǎng)頁(yè)返回的類型實(shí)際上是str,但是它是json()格式的,我們可以用json返回一個(gè)字典。如果不是json格式,使用json就會(huì)報(bào)錯(cuò),拋出json.decoder.JSONDecodeError異常。
??4.post()請(qǐng)求
上面我們了解了最基本的get請(qǐng)求,另外一種比較常見(jiàn)的請(qǐng)求方式就是post()。使用requests實(shí)現(xiàn)post請(qǐng)求也是非常簡(jiǎn)單,示例如下。
import requests res = requests.post('http://httpbin.org/post') print(res.text)
運(yùn)行之后就會(huì)發(fā)現(xiàn)得到了結(jié)果,就說(shuō)明我們post請(qǐng)求成功。
??5.響應(yīng)
發(fā)送請(qǐng)求,之后得到的肯定就是響應(yīng)。除了text,還有狀態(tài)碼,響應(yīng)頭,cookies等等。
requests 庫(kù)可以用來(lái)發(fā)送 HTTP 請(qǐng)求并獲取響應(yīng)。當(dāng)你發(fā)送一個(gè) HTTP 請(qǐng)求時(shí),你會(huì)得到一個(gè) Response 對(duì)象,它包含了從服務(wù)器返回的所有數(shù)據(jù)。Response 對(duì)象有以下屬性:
status_code:HTTP 狀態(tài)碼,表示服務(wù)器的響應(yīng)狀態(tài)。
headers:一個(gè)字典,其中包含了從服務(wù)器返回的所有頭部信息。
body:一個(gè)字節(jié)串,包含了從服務(wù)器返回的所有數(shù)據(jù)。
??總結(jié)
requests是一個(gè)很實(shí)用的Python HTTP客戶端庫(kù),爬蟲和測(cè)試服務(wù)器響應(yīng)數(shù)據(jù)時(shí)經(jīng)常會(huì)用到,requests是Python語(yǔ)言的第三方的庫(kù),專門用于發(fā)送HTTP請(qǐng)求,使用起來(lái)比urllib簡(jiǎn)潔很多。
本文我們說(shuō)了requests的簡(jiǎn)單用法,知道了如何發(fā)送請(qǐng)求,下一篇我們更深層次的來(lái)學(xué)習(xí)requests。我們看看高級(jí)一點(diǎn)的操作,比如講文件上傳,cookies設(shè)置,代理設(shè)置之類的。
到此這篇關(guān)于Python之 requests的使用(一)的文章就介紹到這了,更多相關(guān)Python requests的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)五子棋人機(jī)對(duì)戰(zhàn)?和人人對(duì)戰(zhàn)
這篇文章主要介紹了Python實(shí)現(xiàn)五子棋人機(jī)對(duì)戰(zhàn)?和人人對(duì)戰(zhàn),通過(guò)定義黑白子,落子位置以及獲勝規(guī)則展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-05-05Python實(shí)現(xiàn)Harbor私有鏡像倉(cāng)庫(kù)垃圾自動(dòng)化清理詳情
這篇文章主要介紹了Python實(shí)現(xiàn)Harbor私有鏡像倉(cāng)庫(kù)垃圾自動(dòng)化清理詳情,文章圍繞主題分享相關(guān)詳細(xì)代碼,需要的小伙伴可以參考一下2022-05-05Pygame Transform圖像變形的實(shí)現(xiàn)示例
pygame.transform 模塊允許您對(duì)加載、創(chuàng)建后的圖像進(jìn)行一系列操作,比如調(diào)整圖像大小、旋轉(zhuǎn)圖片等操作,感興趣的可以了解一下2021-11-11在 Django/Flask 開發(fā)服務(wù)器上使用 HTTPS
使用 Django 或 Flask 這種框架開發(fā) web app 的時(shí)候一般都會(huì)用內(nèi)建服務(wù)器開發(fā)和調(diào)試程序,等程序完成后再移交到生產(chǎn)環(huán)境部署。問(wèn)題是這些內(nèi)建服務(wù)器通常都不支持 HTTPS,那么我們來(lái)探討下開啟https吧2014-07-07使用 Celery Once 來(lái)防止 Celery 重復(fù)執(zhí)行同一個(gè)任務(wù)
這篇文章主要介紹了使用 Celery Once 來(lái)防止 Celery 重復(fù)執(zhí)行同一個(gè)任務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10Python selenium環(huán)境搭建實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Python selenium環(huán)境搭建實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09在python的類中動(dòng)態(tài)添加屬性與生成對(duì)象
這篇文章給大家介紹了如何在python的類中動(dòng)態(tài)添加屬性和生成對(duì)象,文中通過(guò)幾個(gè)方面來(lái)進(jìn)行介紹,對(duì)這感興趣的朋友們可以學(xué)習(xí)學(xué)習(xí)。2016-09-09一篇文章學(xué)會(huì)兩種將python打包成exe的方式
最近有部分小伙伴問(wèn)我,python 寫的項(xiàng)目可不可以打包成exe程序,放到?jīng)]有python環(huán)境上的電腦中執(zhí)行? 答案當(dāng)然是可以的,下面這篇文章主要給大家介紹了如何通過(guò)一篇文章學(xué)會(huì)兩種將pyton打包成exe的方式,需要的朋友可以參考下2021-11-11