如何下载查询html个需要JS处理的页面?

How to download and query html pages where JS processing is necessary?

我经常在公开可用的网页上通过 运行 某种 XPath/XQuery 编译非正式数据集。通常 HTML 的结构足够规则,可以很容易地提取有用的信息。

但今天我遇到了 tunefind.com. This website makes extensive use of the REACTJS framework,因此 页面的大部分结构是由 Javascript 在客户端配置的。这些页面在最初下载时非常基础,缺少很多信息。这些页面由一个脚本填充,该脚本在页面底部使用一团乱七八糟的 JSON 数据。

我能想到的解决这个问题的唯一方法是使用某种基于 GUI 的 Web 引擎,只是不显示 GUI 部分。但对于我用来收集信息的这些随意的小 CLI 工具来说,这是一项荒谬的工作量。

有没有什么方法可以在不处理不必要的图形的情况下执行 javascript 预处理?

即使您在没有图形的情况下进行处理,反应 javascript 也会在浏览器上下文中针对 运行 进行调整,至少它会期望一个正常运行的 DOM存在,应用程序本身也可能需要点击/转换才能看到一些数据。

你最好的选择是在浏览器中加载页面,为了简单起见,有很多为此设计的优秀浏览器自动化框架。

多年来我使用了相当多的库,包括 phantomJS,最近我从 nightmarejs.

中获得了最多的使用

它为您运行一个电子浏览器,并为您提供一个有用的 promisified javascript API 来控制它,它具有常见的浏览器功能,例如单击、跟踪链接等。

您可以将其配置为隐藏浏览器,这对于制作 CLI 工具很有用,但是它有点伪无头模式并且仍然需要 windowing/graphical 上下文(例如 x window).

希望这对您有所帮助。

PS - 如果您完全习惯 docker,那么将它变成一个 运行 容器并不难!