→ tedwu2001: 看contentType預設是x-www-form-urlencoded 10/27 10:53
→ tedwu2001: 所以長得就是像你打得那樣 10/27 10:53
但是我直接
params = {"data[base]":"2017-10-27",
"data[base]":"",
...}
是失敗的
推 ckc1ark: 是不是應該用data: value就好? 10/27 11:07
→ neil987: 樓上是指ajax的部分嗎 10/27 11:10
推 ckc1ark: 如果ajax是網頁原本的行為 可以參考這篇 10/27 11:12
因為爬的網頁原本是用ajax送資料的
他送的資料我用console print出來是長這個樣子
但是我不知道怎用成dict格式
→ ckc1ark: 你的key重複了 在dict同個key只會留一筆 10/27 11:13
所以我想知道說ajax他value裡面如果遇到array他是如何處理成post接收的資料QQ
嘗試過
value1 = {"base":["2017-10-27", "name", "", "3", 0],
"data":["正常", "正常", "正常", "正常", "正常", "正常", "正常", "正常
", "正常", "正常"]}
value1 = urllib.urlencode(value1, True)
失敗QQ
推 ckc1ark: value1 = {"data[base][]":["20 ... 這樣呢 10/27 11:26
value1 = {"data[base]":["2017-10-27", "name", "", "3", "0"],
"data[data]":["正常", "正常", "正常", "正常", "正常", "正常", "正常",
"正常", "正常", "正常"]}
value1 = urllib.urlencode(value1, True)
失敗
推 ckc1ark: data[base][] 10/27 11:35
→ neil987: 這也是失敗 怪了= = 10/27 11:36
→ neil987: 都是直接死在日期未填寫 10/27 11:36
推 ckc1ark: 可以看開發工具的Form Data有個view source可以按 10/27 11:39
→ ckc1ark: 看有沒有跟傳的一樣 10/27 11:39
→ ckc1ark: 你 10/27 11:39
→ neil987: 看起來是一樣的 可能要檢查其他東西惹= = 10/27 11:42
推 ckc1ark: 把所有header都代一樣的值 再一個一個刪 看刪到哪個會掛 10/27 11:50
→ neil987: WTF 他卡住了 10/27 12:06
→ tedwu2001: 要看server端怎麼處理request,可能很多 10/27 12:09
→ tedwu2001: 先改用json去試,說不定server端沒處理formdata 10/27 12:10
主要是 我要模擬前端對server送出requests的資料就好
推 handsomeLin: 唷他在送表單的時候用另外一個{}包住了 10/27 22:44
→ handsomeLin: 他server端處理可能是req.body.data.base.data這樣 10/27 22:45
→ handsomeLin: 的深度 10/27 22:45
推 handsomeLin: 上面多打一個data 靶他視為分開 10/27 22:47
→ handsomeLin: 簡而言之你post的資料少一層 10/27 22:47
→ handsomeLin: 寫成dict 或是 object形式的話大概就是 body = {data 10/27 22:51
→ handsomeLin: :{base:[],data:[]}} 10/27 22:51
推 handsomeLin: 可以的話可以傳網址給喔 我幫你測 10/27 22:53
好像不是這個樣子 因為這樣送出去的url怪怪的
WTF 最後解法是
原:
value1 = {"data[base][]":["2017-10-28", "name", "", "3", 0],
"data[data][]":["正常", "正常", "正常", "正常", "正常", "正常", "正常
", "正常", "正常", "正常"]}
value2 = urllib.urlencode(value1, True)
f = res.post(get_data_url, headers = headers, param = value2)
改成:
value1 = 不變
valeu2 = 不變
f = res.post(get_data_url, headers = headers, data = value2)
就可以了= =
※ 編輯: neil987 (219.68.18.225), 10/28/2017 14:33:59
→ neil987: 犯了很蠢的錯QQ 10/28 14:38
推 lemon651: 對server端你那樣做跟我講的是一樣意思的... 10/30 16:28
推 lemon651: param指的是querystring上的東西,他server端沒針對那 10/30 16:31
→ lemon651: 邊parse的話是不管的 10/30 16:31