我正在尝试从脚本中提取日期(2018-11-20)。是否可以从脚本中提取数据?
<script>var dataLayer = [{"author":["David N. Haass"],"postdate_dl":"2018-11-20","region":["Canada"],"content type":"Article","pub type":"article","user category":"anonymous","nodeid_dl":"197954"}];</script>
到目前为止我已经这样做了,但它没有返回任何结果:
//script[@dataLayer='postdate_dl']
如有任何帮助,我们将不胜感激。
最佳答案
XPath 不理解 JavaScript 或 JSON。使用 XPath 选择器可以获得的最接近的是文本节点。可以用XPath字符串函数剪切文本节点内容;根据您的工具,它可能包含也可能不包含正则表达式匹配,但即使这样也不足以正确解析 JSON。
根据您到底在做什么(以及您对脚本内容的信心程度),您可以简单地评估脚本并访问变量,或者自己剪切字符串以查找 JSON,然后 JSON.parse
它,甚至可以硬核构建脚本的 AST,然后以受控方式对其进行评估(例如使用 Esprima 和 Kudzu)。
关于javascript - 是否可以使用 xPath 从脚本中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57507792/