亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python?requests.post()方法中data和json參數如何使用

發布時間:2022-08-29 11:33:46 來源:億速云 閱讀:261 作者:iii 欄目:開發技術

本篇內容主要講解“Python requests.post()方法中data和json參數如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python requests.post()方法中data和json參數如何使用”吧!

json和dict

python中的dict類型要轉換為json格式的數據需要用到json庫:

import json 
<json> = json.dumps(<dict>)

<dict> = json.loads(<json>)

需要注意的是:

python中并沒有json類型這一說法,通過json.dumps(<dict>)轉換的字典對象,最后得到的是一個字符串對象,在python中json格式的數據實際上就是一個字符串。

>>> j = json.dumps(<dict>)
>>> type(j)
<class 'str'>

雖說json格式的數據在python中是以字符串的類型存在的,但是通過str(<dict>)工廠函數所得到的結果同json.dumps(<dict>)方法所得到的結果是不相同的

>>> d = {'a': 1, 'b': 2}
>>> d_d = {"a": 1, "b": 2}
>>> string = str(d)
>>> string_d = str(d_d)
>>> js = json.dumps(d)
>>> js_d = json.dumps(d_d)
>>> string == string_d
True
>>> js = js_d
True
>>> string == js
False
>>> string
"{'a': 1, 'b': 2}"
>>> js
'{"a": 1, "b": 2}'

可以看出string和js的區別在于引號

對于可以作為json.loads(<str>)參數對象的字符串,除了要滿足字典類型的格式外,所有的字符串對象必須是雙引號。

requests.post()

在通過requests.post()進行POST請求時,傳入報文的參數有兩個,一個是data,一個是json

常見的form表單可以直接使用data參數進行報文提交,而data的對象則是python中的字典類型;

在爬蟲的過程中遇到了一種payload報文,是一種json格式的報文,因此傳入的報文對象也應該是格式的;

這里有兩種方法進行報文提交:

import requests
import json 
url = "http://example.com"
data = {
    'a': 1,
 
    'b': 2,
 
}
# 1
requests.post(url, data=json.dumps(data))
# 2-json參數會自動將字典類型的對象轉換為json格式
requests.post(url, json=data)

其它:

在requests.get()方法,中可以使用params參數來構建url

請求得到的結果可能呈現亂碼的狀態,可以通過resp.encoding屬性查看網頁編碼方式,同時可以在獲取resp.text之前對resp.encoding='utf-8'賦值,這樣再次獲取的resp.text則會使用我們要求的編碼方式。

post請求中json和data的區別

post請求中,可以使用data傳遞參數,也可以使用json傳遞參數

兩種方式有什么區別?

如果參數為JSON數據,可以直接傳入json參數,它將自動編碼并將Content-Type的置為application/json

payload = {'key1': 'value1', 'key2': 'value2'} 
 
r = requests.post("https://httpbin.org/post", json=payload)
print(r.text)

如果data傳遞的參數為字符串,如:json.dumps(payload),則request對參數進行url編碼,Content-Type的值為None,所以data傳字符串時,一定要在header中指定Content-Type

payload = {'key1': 'value1', 'key2': 'value2'}
 
headers={"Content-Type": "application/json"}
r = requests.post("https://httpbin.org/post", headers=headers,data=json.dumps(payload))
print(r.text)

如果data傳遞的是字典、元組組成的列表或列表作為值的字典,則request對參數進行url編碼,Content-Type的值為application/x-www-form-urlencoded

# 字典
payload1 = {'key1': 'value1', 'key2': 'value2'}  
r = requests.post("https://httpbin.org/post", data=payload1)
# 元組組成的列表
payload2 = [('key1', 'value1'), ('key1', 'value2')]  
r = requests.post("https://httpbin.org/post", data=payload2)
 
# 列表作為值的字典
payload3 = {'key1': ['value1', 'value2']} 
r = requests.post("https://httpbin.org/post", data=payload3)

到此,相信大家對“Python requests.post()方法中data和json參數如何使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建宁县| 莆田市| 怀安县| 浦东新区| 广丰县| 天镇县| 江津市| 南靖县| 思南县| 威宁| 崇义县| 东莞市| 朝阳县| 梅州市| 曲水县| 金塔县| 镶黄旗| 周宁县| 鹿邑县| 英德市| 海盐县| 石台县| 辉南县| 闽清县| 左云县| 陇川县| 吉水县| 巴林右旗| 漾濞| 沁阳市| 太仓市| 普安县| 栖霞市| 武功县| 石台县| 怀集县| 平定县| 齐河县| 灵山县| 平凉市| 壶关县|