robotestインタフェース自動化テストの複雑post入参処理-転載自【不正なkimol君】
3073 ワード
不真面目なキモ君に転載
https://blog.csdn.net/kimol_justdo/article/details/105354722
一、需要説明
requestsライブラリを使用して爬虫類を記述する場合、POST要求パラメータをパケット分析してからDICTタイプに変換する必要があることが多い.パラメータがこうなっているのを見たとき:
私の心の中で思わず笑って花を咲かせました:こんなに簡単で、どうしてこんなに苦労する必要がありますか?対応するDICTはこうではないでしょうか.
小明さん、専制はいろいろ不服です!!!この威張っている学生、問題を聞いてください.
emmmm...すみません、お邪魔します.散歩しました.
二、解決策
もし私が一人一人出てきたら、気持ちは許すかもしれませんが、量は承知しません.そこで私は方法を考えました.
実は文字列の処理で、jsonライブラリでさらに処理します.(一部のパラメータには辞書、リストなどのタイプが含まれている可能性があります)
https://blog.csdn.net/kimol_justdo/article/details/105354722
一、需要説明
requestsライブラリを使用して爬虫類を記述する場合、POST要求パラメータをパケット分析してからDICTタイプに変換する必要があることが多い.パラメータがこうなっているのを見たとき:
dopost=login&userid=admin&pwd=admin
私の心の中で思わず笑って花を咲かせました:こんなに簡単で、どうしてこんなに苦労する必要がありますか?対応するDICTはこうではないでしょうか.
{
'dopost':'login',
'userid':'admin',
'pwd':'admin'
}
小明さん、専制はいろいろ不服です!!!この威張っている学生、問題を聞いてください.
orderType=-1&receUserInfo={"receUserName":"xxx","receUserCardCode":"xxxxxxxxxxxxxxxxxx","receUserCardCodeType":"1","receUserContact":"xxxxxxxxxxx"}&orderInfo=[{"supplierId":"3601","stationMapId":"7301908","endId":"10720428","endTypeId":"1","planId":"2020-04-07%2C07%3A50%2CX0518%2C430923019%2C430103","planDate":"2020-04-07","driveTime":"07:50","arMoney":86,"orderModelId":"1","goBackFlag":"1","orderCount":1,"ticketOrderMoneyInfo":{"orderMoney":76,"feeMoney":4,"yhqVo":{"yhqId":"","yhqMoney":""},"actionInfo":{"reduceActionCode":"","reduceMoney":0}},"insureOrderMoneyInfo":{"orderMoney":10,"inspackInfo":{"inspackId":602,"inspackReduceMoney":2}},"ticketInfo":[{"ticketTypeId":"1","userCadeType":"1","userCardCode":"xxxxxxxxxxxxxxxxxx","userCardName":"xxx","birthday":"1996-08-24","saveUserFlag":"Y","chooseInspackFlag":"Y","premiumInfo":[],"childInfo":{},"userMobile":"xxxxxxxxxxx"}],"discountInfo":{"cbFlag":"N","cbMoney":0,"intAmount":0}}]&schInfo=[{"ticketTypeList":[{"name":" ","price":"76","id":"1"}],"seats":"48","seatAmount":"42","drvTime":"07:50","schCanSellFlag":"1"}]&t=D3EDDEAF8D7C43B9A94C722982B71ED0
emmmm...すみません、お邪魔します.散歩しました.
二、解決策
もし私が一人一人出てきたら、気持ちは許すかもしれませんが、量は承知しません.そこで私は方法を考えました.
# =============================================================================
# POST dict
# =============================================================================
import json
post = '' # POST
post_list = post.split('&') # list
data = {}
for p in post_list:
try:
data[p.split('=')[0]] = json.loads(p.split('=')[1]) #
except:
data[p.split('=')[0]] = p.split('=')[1] #
print(data)
実は文字列の処理で、jsonライブラリでさらに処理します.(一部のパラメータには辞書、リストなどのタイプが含まれている可能性があります)