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/cn.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灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP