網(wǎng)站首頁 編程語言 正文
一、 基本概念
1、 簡介
requests 模塊是 python 基于 urllib,采用 Apache2 Licensed 開源協(xié)議的 HTTP 庫。它比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP 測試需求。Requests 的哲學(xué)是以 PEP 20 的習(xí)語為中心開發(fā)的,所以它比 urllib 更加 Pythoner
2、 獲取
通過 pip install requests
安裝 requests 庫
導(dǎo)包:
import requests
3、 http 協(xié)議
http ,超文本傳輸協(xié)議,是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個標(biāo)準(zhǔn)。設(shè)計HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法,HTTP是一種基于"請求與響應(yīng)"模式的、無狀態(tài)的應(yīng)用層協(xié)議。HTTP協(xié)議采用URL作為定位網(wǎng)絡(luò)資源的的標(biāo)識符
3.1 URL
統(tǒng)一資源定位符是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源地址。互聯(lián)網(wǎng)上的每一個文件都有一個唯一的 URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它
URL 的一般語法格式為:
protocol://host[:port]/path/[?query]#fragment http://www.itcast.cn/index.html?name=andy&age=18#link
組成 | 說明 |
---|---|
protocol | 通信協(xié)議,常用:http、https 等 |
host | 主機(jī)(域名) |
port | 端口號,可選,省略時候使用方案的默認(rèn)端口,如:http的默認(rèn)端口為80 |
path | 路徑,由零或多個 ‘/’ 符號隔開的字符串,一般用來表示主機(jī)上的一個目錄或文件地址 |
query | 參數(shù),以鍵值對的形式通過 & 來連接 |
fragment | 片段,# 后面內(nèi)容常見于鏈接 錨點 |
url是通過HTTP協(xié)議存取資源的的Internet路徑,一個URL對應(yīng)一個數(shù)據(jù)資源
3.2 常用 http 請求方法
方法 | 說明 |
---|---|
GET | 請求獲取URL位置的資源 |
HEAD | 請求獲取URL位置資源的響應(yīng)消息報告,即獲得資源的頭部信息 |
POST | 請求向URL位置的資源后附加新的消息 |
PUT | 請求向URL位置存儲一個資源,覆蓋原URL位置的資源 |
PATCH | 請求局部更新URL位置的資源,即改變該處資源的部分內(nèi)容 |
DELETE | 請求刪除URL位置存儲的資源 |
GET
,HEAD
是從服務(wù)器獲取信息到本地,PUT
,POST
,PATCH
,DELETE
是從本地向服務(wù)器提交信息。通過URL和命令管理資源,操作獨(dú)立無狀態(tài),網(wǎng)絡(luò)通道及服務(wù)器成了黑盒子
二、 使用方法
1、 基本語法
requests 庫中的方法
方法 | 說明 |
---|---|
requsts.requst() | 構(gòu)造一個請求,最基本的方法,是下面方法的支撐 |
requsts.get() | 獲取網(wǎng)頁,對應(yīng)HTTP中的GET方法 |
requsts.post() | 向網(wǎng)頁提交信息,對應(yīng)HTTP中的POST方法 |
requsts.head() | 獲取html網(wǎng)頁的頭信息,對應(yīng)HTTP中的HEAD方法 |
requsts.put() | 向html提交put方法,對應(yīng)HTTP中的PUT方法 |
requsts.patch() | 向html網(wǎng)頁提交局部請求修改的的請求,對應(yīng)HTTP中的PATCH方法 |
requsts.delete() | 向html提交刪除請求,對應(yīng)HTTP中的DELETE方法 |
主要使用 get 和 post 方法
2、 具體使用方法
2.1 get
2.1.1 基本語法
resp = requests.get(url="http://www.baidu.com") print(resp)
resp 是一個Response對象,一個包含服務(wù)器資源的對象
2.1.2 常用參數(shù)
參數(shù) | 類型 | 作用 |
---|---|---|
params | 字典 | url為基準(zhǔn)的url地址,不包含查詢參數(shù);該方法會自動對params字典編碼,然后和url拼接 |
url | 字符串 | requests 發(fā)起請求的地址 |
headers | 字典 | 請求頭,發(fā)送請求的過程中請求的附加內(nèi)容攜帶著一些必要的參數(shù) |
cookies | 字典 | 攜帶登錄狀態(tài) |
proxies | 字典 | 用來設(shè)置代理 ip 服務(wù)器 |
timeout | 整型 | 用于設(shè)定超時時間, 單位為秒 |
2.2 post
2.2.1 基本語法
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())
2.2.2 常用參數(shù)
參數(shù) | 類型 | 作用 |
---|---|---|
data | 字典 | 作為向服務(wù)器提供或提交資源時提交,主要用于 post 請求 |
json | 字典 | json格式的數(shù)據(jù), json合適在相關(guān)的html |
注意:
- data 和 params 的區(qū)別是: data提交的數(shù)據(jù)并不放在url鏈接里, 而是放在url鏈接對應(yīng)位置的地方作為數(shù)據(jù)來存儲
- data 和 json 的作用類似,適用方法相同
- get 里面的參數(shù)大部分也適用
2.3 response
屬性 | 說明 |
---|---|
resp.status_code | http請求的返回狀態(tài),若為200則表示請求成功。 |
resp.raise_for_status() | 該語句在方法內(nèi)部判斷resp.status_code 是否等于200,如果不等于,則拋出異常 |
resp.text | http響應(yīng)內(nèi)容的字符串形式,即返回的頁面內(nèi)容 |
resp.encoding | 從http header 中猜測的相應(yīng)內(nèi)容編碼方式 |
resp.apparent_encoding | 從內(nèi)容中分析出的響應(yīng)內(nèi)容編碼方式(備選編碼方式) |
resp.content | http響應(yīng)內(nèi)容的二進(jìn)制形式 |
resp.json() | 得到對應(yīng)的 json 格式的數(shù)據(jù),類似于字典 |
2.4 head
2.4.1 基本語法
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 方法反饋頭部內(nèi)容,很少網(wǎng)絡(luò)流量獲得概要信息
2.5 put
python接口自動化
- put請求的作用:更新資源
其語法和 post 請求的語法類似
put 和 post 區(qū)別:
- 新建一條記錄的話就用post
- POST 方法被用于請求源服務(wù)器接受請求中的實體作為請求資源的一個新的從屬物
- 更新一條記錄的話就用put
- PUT方法請求服務(wù)器去把請求里的實體存儲在請求URI標(biāo)識下
總結(jié)
原文鏈接:https://blog.csdn.net/qq_62789540/article/details/123179948
相關(guān)推薦
- 2022-07-26 淺談Redis的事件驅(qū)動模型_Redis
- 2023-06-04 Docker啟動RabbitMQ實現(xiàn)生產(chǎn)者與消費(fèi)者的詳細(xì)過程_docker
- 2022-09-15 Python?并行化執(zhí)行詳細(xì)解析_python
- 2022-08-03 C#中POST接口formdata傳參模板的記錄_C#教程
- 2022-06-06 解決Unity無限滾動復(fù)用列表的問題_C#教程
- 2023-02-10 python中的list?查找與過濾方法整合_python
- 2022-07-13 k8s 之 kubectl 提示 “The connection to the server loc
- 2022-10-20 初識Android?PowerManagerService省電模式_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支