javascript - 是否可以使用 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']
任何帮助,将不胜感激。
解决方案
XPath 不理解 JavaScript 或 JSON。最接近 XPath 选择器的是文本节点。您可以使用 XPath 字符串函数剪切文本节点内容;根据您的工具,它可能包含也可能不包含正则表达式匹配,但即使这样也不足以正确解析 JSON。
根据您正在做什么(以及您对脚本内容的信心程度),您可以简单地评估脚本并访问变量,或者自己剪切字符串以找到 JSON,然后再找到JSON.parse
它,或者甚至是硬核并构建脚本的 AST,然后以受控方式(例如使用 Esprima 和 Kudzu)对其进行评估。
推荐阅读
- x11 - X11 窗口带透明背景
- rest - Webclient复杂查询产生java.lang.IllegalArgumentException
- c# - 我的 Selenium 建议下拉列表无法正常工作
- push-notification - 无法使用 pushbullet API 在 pushbullet 频道中推送通知
- angular - 这里映射角度实现
- terraform - 如何在 terraform 中过滤 aws 子网
- javascript - jstree 节点上的 HTML 选择元素立即关闭
- html - 在这种情况下如何使用字间距?
- api - 从请求正文 golang 将文件解析为变量
- graphql - 如何测试使用 graphql 执行上下文的 Nest.js 参数装饰器