首页 > 解决方案 > 是否可以使用 xPath 从脚本中提取数据?

问题描述

我正在尝试从脚本中提取日期(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']

任何帮助,将不胜感激。

标签: javascriptxpath

解决方案


XPath 不理解 JavaScript 或 JSON。最接近 XPath 选择器的是文本节点。您可以使用 XPath 字符串函数剪切文本节点内容;根据您的工具,它可能包含也可能不包含正则表达式匹配,但即使这样也不足以正确解析 JSON。

根据您正在做什么(以及您对脚本内容的信心程度),您可以简单地评估脚本并访问变量,或者自己剪切字符串以找到 JSON,然后再找到JSON.parse它,或者甚至是硬核并构建脚本的 AST,然后以受控方式(例如使用 Esprima 和 Kudzu)对其进行评估。


推荐阅读