javascript - 如何将 javascript postData 转换为 Python 列表?

标签 javascript python html scrapy

我使用 Scrapy 来模拟页面中的 Post Request。需要从以下摘录中获取有效负载值。 我需要从这个 JS 构造中获取值(postData)到 python 列表中。

<a style="color: red;font-size: 12px;font-weight: bolder" target="_self" title="Click here for processing" onclick="return postData('714','714','null','','','TADIKONDA','0713006','TADIKONDA','','1044','EXE DNO 1046 LAND','KARLAPUDI ROSAIAH, EEDA ANJI REDDY LAND','EXE BALANCE LAND','NANDIPATI VENKATESWARLU ETC LAND','0','0','01/01/1983','25/09/2018','t','16/02/2018','1')" href="#"> Next</a>

这个postData是什么类型的数据?

所以,我的做法如下:

s = response.xpath("//td[@class = 'formbg1']/a/@onclick").extract()[0].split('Data')[1][1:-1].replace("'","").split(',')

返回一个列表。然而,问题在于其中一个值中包含 ,,因此它在列表中被分解为两个单独的值,这是不好的。 就像这个应该是单个列表值,但看起来是 2 个值。

,'KARLAPUDI ROSAIAH, EEDA ANJI REDDY LAND',

那么如何将这个 postData 转换成 python 列表并保存所有值呢?

最佳答案

这不是数据类型,它是由您正在使用的页面定义的任意 javascript 函数,此处的值是单击链接时调用的该函数的参数。您可以“手动”解析它以将其视为 json,例如:

my_list = json.loads('[' + extracted_raw_string[16:-1].replace("'", '"') + ']')

不是很健壮但可以解决问题,如果字符串值中有额外的双引号/单引号,将会失败。否则检查 js2xmlslimit用于解析 javascript。

关于javascript - 如何将 javascript postData 转换为 Python 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52531068/

相关文章:

python - 如何在 Microsoft Azure 中提取 Blob 存储中的 Blob 的上次修改日期

java - 如何将 CSS 添加到 eclipse HTML 文件

javascript - self 评估 Javascript

JavaScript 货币格式

javascript - JQuery革命 slider 链接到特定幻灯片

javascript - 为什么我的按钮在我点击时不隐藏文本区域

javascript - 设置 window.open() 的 HTML 在 Internet Explorer 中产生奇怪的样式问题

javascript - 如何将 aws cognito 与 Web 联合和 javascript 结合使用

python - 函数的多重赋值

python - 在 Tkinter 中调整滚动条高度?