Python中requests庫(kù)的概念及使用詳解
一、 基本概念
1、 簡(jiǎn)介
requests 模塊是 python 基于 urllib,采用 Apache2 Licensed 開源協(xié)議的 HTTP 庫(kù)。它比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP 測(cè)試需求。Requests 的哲學(xué)是以 PEP 20 的習(xí)語(yǔ)為中心開發(fā)的,所以它比 urllib 更加 Pythoner
2、 獲取
通過 pip install requests
安裝 requests 庫(kù)
導(dǎo)包:
import requests
3、 http 協(xié)議
http ,超文本傳輸協(xié)議,是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法,HTTP是一種基于"請(qǐng)求與響應(yīng)"模式的、無(wú)狀態(tài)的應(yīng)用層協(xié)議。HTTP協(xié)議采用URL作為定位網(wǎng)絡(luò)資源的的標(biāo)識(shí)符
3.1 URL
統(tǒng)一資源定位符是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源地址?;ヂ?lián)網(wǎng)上的每一個(gè)文件都有一個(gè)唯一的 URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它
URL 的一般語(yǔ)法格式為:
protocol://host[:port]/path/[?query]#fragment http://www.itcast.cn/index.html?name=andy&age=18#link
組成 | 說(shuō)明 |
protocol | 通信協(xié)議,常用:http、https 等 |
host | 主機(jī)(域名) |
port | 端口號(hào),可選,省略時(shí)候使用方案的默認(rèn)端口,如:http的默認(rèn)端口為80 |
path | 路徑,由零或多個(gè) ‘/’ 符號(hào)隔開的字符串,一般用來(lái)表示主機(jī)上的一個(gè)目錄或文件地址 |
query | 參數(shù),以鍵值對(duì)的形式通過 & 來(lái)連接 |
fragment | 片段,# 后面內(nèi)容常見于鏈接 錨點(diǎn) |
url是通過HTTP協(xié)議存取資源的的Internet路徑,一個(gè)URL對(duì)應(yīng)一個(gè)數(shù)據(jù)資源
3.2 常用 http 請(qǐng)求方法
方法 | 說(shuō)明 |
GET | 請(qǐng)求獲取URL位置的資源 |
HEAD | 請(qǐng)求獲取URL位置資源的響應(yīng)消息報(bào)告,即獲得資源的頭部信息 |
POST | 請(qǐng)求向URL位置的資源后附加新的消息 |
PUT | 請(qǐng)求向URL位置存儲(chǔ)一個(gè)資源,覆蓋原URL位置的資源 |
PATCH | 請(qǐng)求局部更新URL位置的資源,即改變?cè)撎庂Y源的部分內(nèi)容 |
DELETE | 請(qǐng)求刪除URL位置存儲(chǔ)的資源 |
GET
,HEAD
是從服務(wù)器獲取信息到本地,PUT
,POST
,PATCH
,DELETE
是從本地向服務(wù)器提交信息。通過URL和命令管理資源,操作獨(dú)立無(wú)狀態(tài),網(wǎng)絡(luò)通道及服務(wù)器成了黑盒子
二、 使用方法
1、 基本語(yǔ)法
方法 | 說(shuō)明 |
requsts.requst() | 構(gòu)造一個(gè)請(qǐng)求,最基本的方法,是下面方法的支撐 |
requsts.get() | 獲取網(wǎng)頁(yè),對(duì)應(yīng)HTTP中的GET方法 |
requsts.post() | 向網(wǎng)頁(yè)提交信息,對(duì)應(yīng)HTTP中的POST方法 |
requsts.head() | 獲取html網(wǎng)頁(yè)的頭信息,對(duì)應(yīng)HTTP中的HEAD方法 |
requsts.put() | 向html提交put方法,對(duì)應(yīng)HTTP中的PUT方法 |
requsts.patch() | 向html網(wǎng)頁(yè)提交局部請(qǐng)求修改的的請(qǐng)求,對(duì)應(yīng)HTTP中的PATCH方法 |
requsts.delete() | 向html提交刪除請(qǐng)求,對(duì)應(yīng)HTTP中的DELETE方法 |
主要使用 get 和 post 方法
2、 具體使用方法
2.1 get
- 基本語(yǔ)法
resp = requests.get(url="http://www.baidu.com") print(resp)
resp 是一個(gè)Response對(duì)象,一個(gè)包含服務(wù)器資源的對(duì)象
- 常用參數(shù)
參數(shù) | 類型 | 作用 |
params | 字典 | url為基準(zhǔn)的url地址,不包含查詢參數(shù);該方法會(huì)自動(dòng)對(duì)params字典編碼,然后和url拼接 |
url | 字符串 | requests 發(fā)起請(qǐng)求的地址 |
headers | 字典 | 請(qǐng)求頭,發(fā)送請(qǐng)求的過程中請(qǐng)求的附加內(nèi)容攜帶著一些必要的參數(shù) |
cookies | 字典 | 攜帶登錄狀態(tài) |
proxies | 字典 | 用來(lái)設(shè)置代理 ip 服務(wù)器 |
timeout | 整型 | 用于設(shè)定超時(shí)時(shí)間, 單位為秒 |
2.2 post
- 基本語(yǔ)法
word = input("please input a word") url = "https://fanyi.baidu.com/sug" data = { "kw": word, } headers = { 'User-Agent': "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 96.0.4664 .93 Safari / 537.36", } resp = requests.get(url=url, data=data, headers=headers) print(resp.json())
- 常用參數(shù)
參數(shù) | 類型 | 作用 |
data | 字典 | 作為向服務(wù)器提供或提交資源時(shí)提交,主要用于 post 請(qǐng)求 |
json | 字典 | json格式的數(shù)據(jù), json合適在相關(guān)的html |
注意:
- data 和 params 的區(qū)別是: data提交的數(shù)據(jù)并不放在url鏈接里, 而是放在url鏈接對(duì)應(yīng)位置的地方作為數(shù)據(jù)來(lái)存儲(chǔ)
- data 和 json 的作用類似,適用方法相同
- get 里面的參數(shù)大部分也適用
2.3 response
屬性 | 說(shuō)明 |
resp.status_code | http請(qǐng)求的返回狀態(tài),若為200則表示請(qǐng)求成功。 |
resp.raise_for_status() | 該語(yǔ)句在方法內(nèi)部判斷resp.status_code 是否等于200,如果不等于,則拋出異常 |
resp.text | http響應(yīng)內(nèi)容的字符串形式,即返回的頁(yè)面內(nèi)容 |
resp.encoding | 從http header 中猜測(cè)的相應(yīng)內(nèi)容編碼方式 |
resp.apparent_encoding | 從內(nèi)容中分析出的響應(yīng)內(nèi)容編碼方式(備選編碼方式) |
resp.content | http響應(yīng)內(nèi)容的二進(jìn)制形式 |
resp.json() | 得到對(duì)應(yīng)的 json 格式的數(shù)據(jù),類似于字典 |
2.4 head
- 基本語(yǔ)法注意:
data 和 params 的區(qū)別是: data提交的數(shù)據(jù)并不放在url鏈接里, 而是放在url鏈接對(duì)應(yīng)位置的地方作為數(shù)據(jù)來(lái)存儲(chǔ)data 和 json 的作用類似,適用方法相同get 里面的參數(shù)大部分也適用
url = "http://www.baidu.com" headers = { 'User-Agent': "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 96.0.4664 .93 Safari / 537.36", } resp = requests.head(url=url) print(resp.headers)
resp.headers 方法反饋頭部?jī)?nèi)容,很少網(wǎng)絡(luò)流量獲得概要信息
2.5 put
python接口自動(dòng)化
- put請(qǐng)求的作用:更新資源
其語(yǔ)法和 post 請(qǐng)求的語(yǔ)法類似
put 和 post 區(qū)別:
- 新建一條記錄的話就用post
- POST 方法被用于請(qǐng)求源服務(wù)器接受請(qǐng)求中的實(shí)體作為請(qǐng)求資源的一個(gè)新的從屬物
- 更新一條記錄的話就用put
- PUT方法請(qǐng)求服務(wù)器去把請(qǐng)求里的實(shí)體存儲(chǔ)在請(qǐng)求URI標(biāo)識(shí)下
到此這篇關(guān)于Python中requests庫(kù)的概念及使用詳解的文章就介紹到這了,更多相關(guān)Python中requests庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于pytorch實(shí)現(xiàn)對(duì)圖片進(jìn)行數(shù)據(jù)增強(qiáng)
圖像數(shù)據(jù)增強(qiáng)是一種在訓(xùn)練機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型時(shí)常用的策略,尤其是在計(jì)算機(jī)視覺領(lǐng)域,具體而言,它通過創(chuàng)建和原始圖像稍有不同的新圖像來(lái)擴(kuò)大訓(xùn)練集,本文給大家介紹了如何基于pytorch實(shí)現(xiàn)對(duì)圖片進(jìn)行數(shù)據(jù)增強(qiáng),需要的朋友可以參考下2024-01-01詳解python之多進(jìn)程和進(jìn)程池(Processing庫(kù))
本篇文章主要介紹了詳解python之多進(jìn)程和進(jìn)程池(Processing庫(kù)),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-06-06Python基于textdistance實(shí)現(xiàn)計(jì)算文本相似度
textdistance是Python的第三方庫(kù),用于計(jì)算文本之間的相似度或距離,本文主要為大家詳細(xì)介紹了如何使用textdistance實(shí)現(xiàn)計(jì)算文本相似度,需要的可以了解下2024-03-03Python實(shí)現(xiàn)的用戶登錄系統(tǒng)功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的用戶登錄系統(tǒng)功能,涉及Python流程控制及字符串判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02python 利用百度API進(jìn)行淘寶評(píng)論關(guān)鍵詞提取
這篇文章主要介紹了python 利用百度API進(jìn)行淘寶評(píng)論關(guān)鍵詞提取,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03從頭學(xué)Python之編寫可執(zhí)行的.py文件
這篇文章主要介紹了從頭學(xué)Python之編寫可執(zhí)行的.py文件,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11Python實(shí)現(xiàn)基于Fasttext的商品評(píng)論數(shù)據(jù)分類的操作流程
這篇文章主要介紹了Python實(shí)現(xiàn)基于Fasttext的商品評(píng)論數(shù)據(jù)分類,今天使用的fasttext更像是一個(gè)集成的庫(kù),把向量化和分類一起做掉了,這個(gè)對(duì)于使用層面來(lái)講就更方便了一些,需要的朋友可以參考下2022-06-06基于Python編寫一個(gè)簡(jiǎn)單的搖號(hào)系統(tǒng)
在現(xiàn)代社會(huì)中,搖號(hào)系統(tǒng)廣泛應(yīng)用于車牌搖號(hào)、房屋搖號(hào)等公共資源分配領(lǐng)域,本文將詳細(xì)介紹如何使用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的搖號(hào)系統(tǒng),有需要的可以了解下2024-11-11opencv-python+yolov3實(shí)現(xiàn)目標(biāo)檢測(cè)
因?yàn)樽罱娜蝿?wù)有用到目標(biāo)檢測(cè),快速地了解了目標(biāo)檢測(cè)這一任務(wù),并且實(shí)現(xiàn)了使用opencv進(jìn)行目標(biāo)檢測(cè)。感興趣的可以了解一下2021-06-06