Python 板


LINE

最近寫的小爬蟲遇到一個問題 就是網頁的表單資料是利用javascript截取之後 再利用.ajax送出去 $.ajax({ url: "my url", data: {data:value}, type: "POST", dataType: 'text', success: function (msg) { ... } }); value用console看起來長這個樣子 {base: Array(5), data: Array(7)} base: (5) ["2017-10-27", "name", "", "3", 0] data: (7) ["正常", "正常", "正常", "正常", "正常", "正常", "正常"] 不過用chrome的開發工具看了一下POST出去的資料 data[base][]:2017-10-27 data[base][]:name data[base][]: data[base][]:3 data[base][]:0 data[data][]:正常 data[data][]:正常 data[data][]:正常 data[data][]:正常 data[data][]:正常 data[data][]:正常 data[data][]:正常 data[data][]:正常 data[data][]:正常 data[data][]:正常 感覺就不太對 在python底下直接送這個也是錯的 想請問一下 jQuery裡面的ajax在POST表單的時候 他轉換成requests的payload 會長成什麼樣子? 感謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.251.134
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1509072345.A.A68.html
1F:→ tedwu2001: 看contentType預設是x-www-form-urlencoded 10/27 10:53
2F:→ tedwu2001: 所以長得就是像你打得那樣 10/27 10:53
但是我直接 params = {"data[base]":"2017-10-27", "data[base]":"", ...} 是失敗的
3F:推 ckc1ark: 是不是應該用data: value就好? 10/27 11:07
4F:→ neil987: 樓上是指ajax的部分嗎 10/27 11:10
5F:推 ckc1ark: 如果ajax是網頁原本的行為 可以參考這篇 10/27 11:12
6F:→ ckc1ark: http://tinyurl.com/y726rrqg 10/27 11:12
因為爬的網頁原本是用ajax送資料的 他送的資料我用console print出來是長這個樣子 但是我不知道怎用成dict格式
7F:→ ckc1ark: 你的key重複了 在dict同個key只會留一筆 10/27 11:13
所以我想知道說ajax他value裡面如果遇到array他是如何處理成post接收的資料QQ
8F:→ ckc1ark: https://stackoverflow.com/a/10233141 換這篇試試 10/27 11:15
嘗試過 value1 = {"base":["2017-10-27", "name", "", "3", 0], "data":["正常", "正常", "正常", "正常", "正常", "正常", "正常", "正常 ", "正常", "正常"]} value1 = urllib.urlencode(value1, True) 失敗QQ
9F:推 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) 失敗
10F:推 ckc1ark: data[base][] 10/27 11:35
11F:→ neil987: 這也是失敗 怪了= = 10/27 11:36
12F:→ neil987: 都是直接死在日期未填寫 10/27 11:36
13F:推 ckc1ark: 可以看開發工具的Form Data有個view source可以按 10/27 11:39
14F:→ ckc1ark: 看有沒有跟傳的一樣 10/27 11:39
15F:→ ckc1ark: 你 10/27 11:39
16F:→ neil987: 看起來是一樣的 可能要檢查其他東西惹= = 10/27 11:42
17F:推 ckc1ark: 把所有header都代一樣的值 再一個一個刪 看刪到哪個會掛 10/27 11:50
18F:→ neil987: WTF 他卡住了 10/27 12:06
19F:→ tedwu2001: 要看server端怎麼處理request,可能很多 10/27 12:09
20F:→ tedwu2001: 先改用json去試,說不定server端沒處理formdata 10/27 12:10
主要是 我要模擬前端對server送出requests的資料就好
21F:推 handsomeLin: 唷他在送表單的時候用另外一個{}包住了 10/27 22:44
22F:→ handsomeLin: 他server端處理可能是req.body.data.base.data這樣 10/27 22:45
23F:→ handsomeLin: 的深度 10/27 22:45
24F:推 handsomeLin: 上面多打一個data 靶他視為分開 10/27 22:47
25F:→ handsomeLin: 簡而言之你post的資料少一層 10/27 22:47
26F:→ handsomeLin: 寫成dict 或是 object形式的話大概就是 body = {data 10/27 22:51
27F:→ handsomeLin: :{base:[],data:[]}} 10/27 22:51
28F:推 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
29F:→ neil987: 犯了很蠢的錯QQ 10/28 14:38
30F:推 lemon651: 對server端你那樣做跟我講的是一樣意思的... 10/30 16:28
31F:推 lemon651: param指的是querystring上的東西,他server端沒針對那 10/30 16:31
32F:→ lemon651: 邊parse的話是不管的 10/30 16:31







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP