使用 Node.js 进行网页抓取时,我可以在页面上运行所有 JavaScript 吗? (即模拟真实的浏览器?)

2024-02-12

我正在尝试使用 Node.js 进行一些网络抓取。使用jsdom,很容易加载 DOM 并将 JavaScript 注入其中。我想更进一步:运行从网页链接到的所有 JavaScript,然后检查生成的 DOM,包括元素的视觉属性(高度、宽度等)。

到目前为止,我得到NaN当我尝试使用 jsdom 检查 DOM 元素的尺寸时。

这可能吗?

让我印象深刻的是,存在两个不同的挑战:

  1. 运行网页上所有的JS
  2. 除了 DOM 之外,让 Node 模拟窗口/屏幕渲染

另一种提出问题的方式是:是否可以使用 node.js 作为可以编写脚本的完全无头浏览器?

如果这是不可能的,有人对我可以使用哪个库来执行此操作有建议吗?我对语言相对不可知。


看看 PhantomJS。使用起来非常简单。

http://www.phantomjs.org/ http://www.phantomjs.org/

PhantomJS是一个打包并嵌入WebKit的命令行工具。从字面上看,它的行为就像任何其他基于 WebKit 的 Web 浏览器一样,只不过屏幕上不显示任何内容(因此,术语“无头”)。除此之外,PhantomJS 可以使用其 JavaScript API 进行控制或编写脚本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Node.js 进行网页抓取时,我可以在页面上运行所有 JavaScript 吗? (即模拟真实的浏览器?) 的相关文章

随机推荐