對(duì)python中使用requests模塊參數(shù)編碼的不同處理方法
python中使用requests模塊http請(qǐng)求時(shí),發(fā)現(xiàn)中文參數(shù)不會(huì)自動(dòng)的URL編碼,并且沒(méi)有找到類(lèi)似urllib (python3)模塊中urllib.parse.quote("中文")手動(dòng)URL編碼的方法.研究了半天發(fā)現(xiàn)requests模塊對(duì)中文參數(shù)有3種不同的處理方式.
一、requests模塊自動(dòng)URL編碼參數(shù)
要使參數(shù)自動(dòng)URL編碼,需要將請(qǐng)求參數(shù)以字典的形式定義,如下demo:
import requests
proxy = {"http":"http://127.0.0.1:8080",
"https":"http://127.0.0.1:8080"}
def reTest():
url = "http://www.baidu.com"
pdict = {"name":"中文測(cè)試"}
requests.post(url = url,data = pdict,proxies = proxy)
效果如下圖,中文被URL編碼正確處理

二、參數(shù)原樣輸出,不需要編碼處理
使用dictionary定義參數(shù),發(fā)送請(qǐng)求時(shí)requests模塊會(huì)自動(dòng)URL編碼處理參數(shù).但有些時(shí)候可能不需要編碼,要求參數(shù)原樣輸出,這個(gè)時(shí)候?qū)?shù)直接定義成字符串即可.
import requests
proxy = {"http":"http://127.0.0.1:8080",
"https":"http://127.0.0.1:8080"}
def reTest():
url = "http://www.baidu.com"
pstr1 = "name=中文".encode("utf-8")
requests.post(url = url,data = pstr1, proxies = proxy)
注:參數(shù)需要utf-8編碼,否則會(huì)報(bào)錯(cuò)Use body.encode('utf-8') if you want to send it encoded in UTF-8.
最后效果如下圖,參數(shù)原樣輸出:

三、參數(shù)使用format或%格式化,導(dǎo)致參數(shù)str變成bytes
有些時(shí)候直接定義的字符串參數(shù),其中有的參數(shù)是變量,需要format或%格式化控制變量.這個(gè)時(shí)候會(huì)發(fā)現(xiàn)格式化后的參數(shù)變成了bytes.
import requests
proxy = {"http":"http://127.0.0.1:8080",
"https":"http://127.0.0.1:8080"}
def reTest():
url = "http://www.baidu.com"
pstr2 = "name={0}".format("中文".encode("utf-8"))
requests.post(url = url,data = pstr2, proxies = proxy)
參數(shù)變成了bytes

在該種請(qǐng)求下:
1. 如果參數(shù)需要URL編碼.當(dāng)參數(shù)少的時(shí)候可以使用dict定義.如果參數(shù)太多,dict比較麻煩,可以針對(duì)參數(shù)使用urllib.parse.quote("中文")手動(dòng)encode成URL編碼.
2. 如果中文參數(shù)需要原樣輸出.將參數(shù)格式化完成后再編碼即可.pstr2 = "name={0}".format("中文").encode("utf-8")
以上這篇對(duì)python中使用requests模塊參數(shù)編碼的不同處理方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解
- 淺談python requests 的put, post 請(qǐng)求參數(shù)的問(wèn)題
- python requests包的request()函數(shù)中的參數(shù)-params和data的區(qū)別介紹
- 使用python將請(qǐng)求的requests headers參數(shù)格式化方法
- Python requests.post方法中data與json參數(shù)區(qū)別詳解
- 使用Python爬蟲(chóng)庫(kù)requests發(fā)送請(qǐng)求、傳遞URL參數(shù)、定制headers
- python requests 庫(kù)請(qǐng)求帶有文件參數(shù)的接口實(shí)例
- 解決python3 requests headers參數(shù)不能有中文的問(wèn)題
- 詳解python requests中的post請(qǐng)求的參數(shù)問(wèn)題
- Python requests庫(kù)參數(shù)提交的注意事項(xiàng)總結(jié)
相關(guān)文章
判斷python對(duì)象是否可調(diào)用的三種方式及其區(qū)別詳解
今天小編就為大家分享一篇判斷python對(duì)象是否可調(diào)用的三種方式及其區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Flask-SocketIO服務(wù)端安裝及使用代碼示例
這篇文章主要介紹了Flask-SocketIO服務(wù)端安裝及使用代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Django 忘記管理員或忘記管理員密碼 重設(shè)登錄密碼的方法
今天小編就為大家分享一篇Django 忘記管理員或忘記管理員密碼 重設(shè)登錄密碼的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
通過(guò)Python的gtts庫(kù)將文字轉(zhuǎn)為音頻的操作方法
文字轉(zhuǎn)音頻可以幫助視覺(jué)障礙者通過(guò)聽(tīng)取聲音來(lái)獲取信息,也可以幫助人們方便地聽(tīng)取一些長(zhǎng)篇文章或?qū)W習(xí)資料,節(jié)省閱讀時(shí)間和疲勞,這篇文章主要介紹了通過(guò)Python的gtts庫(kù)將文字轉(zhuǎn)為音頻的方法,需要的朋友可以參考下2023-05-05
使用國(guó)內(nèi)鏡像源優(yōu)化pip install下載的方法步驟
在Python開(kāi)發(fā)中,pip 是一個(gè)不可或缺的工具,用于安裝和管理Python包,然而,由于默認(rèn)的PyPI服務(wù)器位于國(guó)外,國(guó)內(nèi)用戶(hù)在安裝依賴(lài)時(shí)可能會(huì)遇到下載速度慢、連接不穩(wěn)定等問(wèn)題,所以本文將詳細(xì)介紹如何使用國(guó)內(nèi)鏡像源來(lái)加速pip install -r requirements.txt的過(guò)程2025-03-03
python實(shí)現(xiàn)將文件夾內(nèi)的每張圖片批量分割成多張
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)將文件夾內(nèi)的每張圖片批量分割成多張,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
python實(shí)現(xiàn)批量圖片格式轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)批量圖片格式轉(zhuǎn)換的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
python爬取股票最新數(shù)據(jù)并用excel繪制樹(shù)狀圖的示例
這篇文章主要介紹了python爬取股票最新數(shù)據(jù)并用excel繪制樹(shù)狀圖的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03

