国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對python中使用requests模塊參數編碼的不同處理方法

2020-01-04 15:03:06
字體:
來源:轉載
供稿:網友

python中使用requests模塊http請求時,發現中文參數不會自動的URL編碼,并且沒有找到類似urllib (python3)模塊中urllib.parse.quote("中文")手動URL編碼的方法.研究了半天發現requests模塊對中文參數有3種不同的處理方式.

一、requests模塊自動URL編碼參數

要使參數自動URL編碼,需要將請求參數以字典的形式定義,如下demo:

import requestsproxy = {"http":"http://127.0.0.1:8080", "https":"http://127.0.0.1:8080"}def reTest(): url = "http://www.baidu.com" pdict = {"name":"中文測試"} requests.post(url = url,data = pdict,proxies = proxy)

效果如下圖,中文被URL編碼正確處理

python,requests,模塊,參數,編碼

二、參數原樣輸出,不需要編碼處理

使用dictionary定義參數,發送請求時requests模塊會自動URL編碼處理參數.但有些時候可能不需要編碼,要求參數原樣輸出,這個時候將參數直接定義成字符串即可.

import requestsproxy = {"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)

注:參數需要utf-8編碼,否則會報錯Use body.encode('utf-8') if you want to send it encoded in UTF-8.

最后效果如下圖,參數原樣輸出:

python,requests,模塊,參數,編碼

三、參數使用format或%格式化,導致參數str變成bytes

有些時候直接定義的字符串參數,其中有的參數是變量,需要format或%格式化控制變量.這個時候會發現格式化后的參數變成了bytes.

import requestsproxy = {"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)

參數變成了bytes

python,requests,模塊,參數,編碼

在該種請求下:

1. 如果參數需要URL編碼.當參數少的時候可以使用dict定義.如果參數太多,dict比較麻煩,可以針對參數使用urllib.parse.quote("中文")手動encode成URL編碼.

2. 如果中文參數需要原樣輸出.將參數格式化完成后再編碼即可.pstr2 = "name={0}".format("中文").encode("utf-8")

以上這篇對python中使用requests模塊參數編碼的不同處理方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙游县| 荣昌县| 获嘉县| 北碚区| 五大连池市| 肃南| 安新县| 新竹市| 清苑县| 邢台市| 绥芬河市| 高州市| 安宁市| 托里县| 长阳| 吴旗县| 南充市| 丹阳市| 沙河市| 疏勒县| 固始县| 吴桥县| 济阳县| 东乡族自治县| 望都县| 福建省| 林芝县| 铁岭市| 法库县| 东光县| 凤翔县| 陇川县| 湘潭市| 松江区| 天津市| 长宁区| 沂南县| 福州市| 萝北县| 竹北市| 荔波县|