python requests常見使用方法記錄

2022-09-06 21:54:31 字數 4480 閱讀 3438

requests是py用來進行http和https請求的支援庫,在進行http或者https請求時能夠很方便的構造對應請求,下面就以get  post方法以及帶請求體  不帶請求體 ,headers   session鑑權等使用方法進行說明。

下面示例是以華為雲華北-北京四  vpc為操作物件,分別進行鑑權   查詢vpc 和建立vpc的。具體api格式可以登入華為雲官網檢視

示例中賬號密碼資訊需要根據自己的賬號資訊填寫

#拼接url

return uri_scheme+endpoint+resource_path

defposttoken(resource_path, endpoint, username, password, domainname, projectname):

#請求使用者token

url = jointuri(resource_path, endpoint=endpoint)

headers =json_h

jsonbody =}}

},"scope": }}

}#請求體為json格式時使用json形參進行傳遞

res = requests.post(url=url, headers=headers, json=jsonbody)

token_h[

"x-auth-token

"] = res.headers['

x-subject-token']

return

resdef getvpclist(endpoint, projectid, querystr=none):

#使用headers鑑權獲取使用者vpc列表

resource_path = "

/v1/%s/vpcs

" %projectid

#get方法如果有querystr則進行拼接,一般與url使用?間隔

if querystr is

none:

url = jointuri(resource_path, endpoint=endpoint)

else

: url = jointuri(resource_path, endpoint=endpoint)

url +=querystr

headers ={}

for val in

[json_h, token_h]:

headers.update(val)

#正常http請求有url和headres傳參,headers為字典格式

res = requests.get(url=url, headers=headers)

return

resdef getvpclistfromsession(endpoint, projectid, querystr=none):

#使用session進行鑑權獲取使用者vpc列表

resource_path = "

/v1/%s/vpcs

" %projectid

if querystr is

none:

url = jointuri(resource_path, endpoint=endpoint)

else

: url = jointuri(resource_path, endpoint=endpoint)

url +=querystr

headers ={}

for val in

[json_h, token_h]:

headers.update(val)

#建立session物件,並更新session的headers資訊,將token資訊在session中傳遞

mysession =requests.session()

mysession.headers.update(headers)

#使用session物件進行請求,session已經更新了headers所以請求引數不再需要heasers

res = mysession.get(url=url)

return

resdef getvpclistfromcookies(endpoint, projectid, querystr=none):

#使用cookies鑑權獲取使用者vpc列表

resource_path = "

/v1/%s/vpcs

" %projectid

if querystr is

none:

url = jointuri(resource_path, endpoint=endpoint)

else

: url = jointuri(resource_path, endpoint=endpoint)

url +=querystr

headers ={}

for val in

[json_h, token_h]:

headers.update(val)

#建立session物件,並更新session的cookies資訊,將token在cookies中傳遞

mysession =requests.session()

mysession.cookies.update(headers)

#使用session物件進行請求,session已經更新了headers所以請求引數不再需要heasers。服務方不支援這種鑑權方式,返回401。用法就是這樣

res = mysession.get(url=url)

return

resdef createvpc(endpoint, projectid, name, cidr, description="

default

", enterprise_project_id="0"

):

#帶請求體的請求示例

resource_path = "

/v1/%s/vpcs

" %projectid

url = jointuri(resource_path, endpoint=endpoint)

headers ={}

for val in

[json_h, token_h]:

headers.update(val)

jsonbody =

}#帶url headers requestbody的請求傳參

res = requests.post(url=url, headers=headers, json=jsonbody)

return

resif

__name__ == "

__main__":

#使用header鑑權進行get post請求

posttoken("

/v3/auth/tokens

", "

iam.cn-north-4.myhuaweicloud.com

", "使用者名稱

", "使用者密碼

", "

賬號", "

cn-north-4")

res = getvpclist("

vpc.cn-north-4.myhuaweicloud.com

", "

專案id")

#newvpc = createvpc("vpc.cn-north-4.myhuaweicloud.com", "專案id", "createvpc1", "10.0.0.0/16")

#print(newvpc.json()["vpc"]["id"])

#使用session鑑權進行get post請求

vpclist = getvpclistfromsession("

vpc.cn-north-4.myhuaweicloud.com

", "專案id")

for obj in vpclist.json()['

vpcs']:

print(obj['id'

]) vpclist = getvpclistfromcookies("

vpc.cn-north-4.myhuaweicloud.com

", "專案id")

for obj in vpclist.json()['

vpcs']:

print(obj['

id'])

Python Requests 學習筆記

一直想用 python 做點網路相關的東西,找了下,發現了 requests 庫,現記錄下學習筆記。requests 是什麼 requests 入門 requests 提高 首先,requests 是什麼。requests是乙個封裝了 http 操作和請求的庫,可以很方便的抓取網頁的內容,囧,這個是...

python requests傳送json格式資料

requests是常用的請求庫,不管是寫爬蟲指令碼,還是測試介面返回資料等。都是很簡單常用的工具。但是,我們寫程式的時候,最常用的介面post資料的格式是json格式。當我們需要post json格式資料的時候,怎麼辦呢,只需要新增修改兩處小地方即可。詳見如下 import requests imp...

Python Requests 學習 筆記

在做web題目的時候看到一道這樣的題,要讓我迅速提交,看到別人的writeup 發現要寫python指令碼,於是就來學一下python requests 題目連線 來自網路安全實驗室 該文件的內容來自 pyhon requests 快速入門 r requests.get 網域名稱 其他玩法 r re...