關於requests的urlencode問題

2022-09-01 08:24:12 字數 862 閱讀 3342

眾所周知,requests會對請求自動地進行urlencode,但這個自動進行的urlencode其實有很多不盡人意的地方:

1.有時候,我們的data是已經urlencode過了的data,儘管我們不希望它進行urlencode,但它仍然會再urlencode一次,導致data面目全非;

2.有時候,我們雖然希望urlencode但對編碼的字符集有要求,但它卻無法做到,而且會用預設的urlencode,使得data換了面貌。

requests中urlencode的大概規則:

對於get請求,requests會自動判斷引數是否已經進行過urlencode

對於post請求,如果data為字典形式,則會自動強制進行urlencode(不管引數是否已經經過urlencode)如果data為字串形式,則會自動判斷引數是否經過urlencode,但如果要

所以對於問題一:

我們只需要在使用post請求時,把字典形式的引數轉化成字串並加上headers就可以解決了

data=

=>

data="a=%e5%be%b7%e7%8e%9b%e8%a5%bf%e4%ba%9a&b=123"

'''而對於問題二:

則需要先把data轉化為所需字元編碼的urlencode再加上headers即可

from urllib.parse import

urlencode

import

requests

data=

data=urlencode(data,encoding='

gb2312')

r=requests.post(url,headers=headers,data=data)

Python 爬蟲 關於requests庫

1 requests 有try except模式,利用r.raise for status 函式引發except機制 2 requests.get url,kwargs 裡面的引數有headers 定製http頭 kv r requests.get url,headers kv params url...

Requests庫的入門

windows平台下,以管理員模式執行cmd方法 說明requests.requests 構造乙個請求,支撐以下各方法的基礎方法 requests.get 獲取html網頁的主要方法,對應於http的get requests.head 獲取網頁頭資訊的的方法,對應於http的head request...

requests庫的使用

import requests 引用模組 帶引數請求 get引數例項 requests.get params 或url payload accept encoding gzip accept language zh cn,zh q 0.8 referer res1 requests.get url,...