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

发布于 2024-12-10 23:53:20 字数 413 浏览 2 评论 0原文

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

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

这可能吗?

我发现有两个不同的挑战:

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

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

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

I'm trying to do some web scraping with node.js. Using jsdom, it is easy to load up the DOM and inject JavaScript into it. I want to go one step further: run all JavaScript linked to from the web page and then inspect the resulting DOM, including visual properties (height, width, etc) of elements.

Thus far, I get NaN when I try to inspect the dimensions of DOM elements with jsdom.

Is this possible?

It strikes me that there are two distinct challenges:

  1. Running all the JS on the web page
  2. Getting Node to simulate the window/screen rendering in addition to just the DOM

Another way to ask the question: is it possible to use node.js as a completely headless browser that you can script?

If this isn't possible, does anyone have suggestions for what library I can use to do this? I'm relatively language agnostic.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少女七分熟 2024-12-17 23:53:20

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

http://www.phantomjs.org/

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

Take a look at PhantomJS. Incredibly simple to use.

http://www.phantomjs.org/

PhantomJS is a command-line tool that packs and embeds WebKit. Literally it acts like any other WebKit-based web browser, except that nothing gets displayed to the screen (thus, the term headless). In addition to that, PhantomJS can be controlled or scripted using its JavaScript API.

榆西 2024-12-17 23:53:20

您可以使用:

  • htmlunit (java, jython)
  • PyQtWebKit 或 pygtk + webkit (python)
  • WWW::Mechanize::Firefox 从 firefox (perl) 抓取
  • Win32-IEAutomation 从 MS internet explorer (perl) 抓取

所有这些解决方案都可以运行 javascript以及。

您可以直接从 http://stackoverflow.com 搜索中找到许多示例代码

You can use:

  • htmlunit (java, jython)
  • PyQtWebKit or pygtk + webkit (python)
  • WWW::Mechanize::Firefox to scrape from firefox (perl)
  • Win32-IEAutomation to scrape from MS internet explorer (perl)

All those solutions can run javascript as well.

You will find many sample code right from http://stackoverflow.com searches

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文