使用 Node.js 进行网页抓取时,我可以在页面上运行所有 JavaScript 吗? (即模拟真实的浏览器?)
我正在尝试使用 Node.js 进行一些网络抓取。使用jsdom
,可以轻松加载 DOM 并将 JavaScript 注入其中。我想更进一步:运行从网页链接到的所有 JavaScript,然后检查生成的 DOM,包括元素的视觉属性(高度、宽度等)。
到目前为止,当我尝试使用 jsdom 检查 DOM 元素的尺寸时,我得到了 NaN
。
这可能吗?
我发现有两个不同的挑战:
- 在网页上运行所有 JS
- 除了 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:
- Running all the JS on the web page
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看看 PhantomJS。使用起来非常简单。
http://www.phantomjs.org/
Take a look at PhantomJS. Incredibly simple to use.
http://www.phantomjs.org/
您可以使用:
所有这些解决方案都可以运行 javascript以及。
您可以直接从 http://stackoverflow.com 搜索中找到许多示例代码
You can use:
All those solutions can run javascript as well.
You will find many sample code right from http://stackoverflow.com searches