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

标签 javascript html reactjs webengine

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

但是今天我遇到了tunefind.com .本网站广泛使用 REACTJS framework ,所以页面的大部分结构都是通过 Javascript 在客户端配置的。这些页面在最初下载时非常基础,缺少很多信息。这些页面由一个脚本填充,该脚本在页面底部使用一团乱七八糟的 JSON 数据。

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

有没有办法在不处理不必要的图形的情况下执行 javascript 预处理?

最佳答案

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

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

多年来我使用了相当多的库,包括 phantomJS,最近我从 nightmarejs 中获得了最大的 yield 。 .

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

您可以将其配置为隐藏浏览器,这对于制作 CLI 工具很有用,但是它有点伪 headless 模式,仍然需要窗口/图形上下文(例如 x 窗口)。

希望这对您有所帮助。

PS - 如果您完全习惯了 docker,那么让它成为一个正在运行的容器并不难!

关于javascript - 如何下载查询需要JS处理的html页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50080775/

相关文章:

javascript - Asp.net javascript 隐藏和显示所有下拉列表项

javascript - 从一行后面显示两个文本元素

javascript - 为什么 TypeScript 中的 'instanceof' 给我错误 "' Foo' only references a type, but is being used as a value here."?

javascript - 使用书签时 li 元素垂直折叠

javascript - React-router子域路由

javascript - 在 for 循环的每次迭代中更新状态

javascript - 使用 jQuery 将 CSS 代码添加到 *

jquery - 如何在包含的 HTML 文件中添加 AngularJS?

html - Svg - Firefox 在设置 stroke-width 时计算错误的宽度

javascript - Jquery 到 React js