【发布时间】:2017-10-29 04:05:44
【问题描述】:
我正在尝试从网站上抓取内容。我能够使用 nodejs 获取主页的 HTML,但我发现该页面是动态生成的。资源是从其他来源请求的,当我最终抓取 HTML 时,它们还不存在。
我已经用 PhantomJS 验证了这一点,它允许我截屏页面并生成被抓取内容的屏幕截图。该页面肯定会加载,但它完全是空的。
我要问的是,这可以做到吗? CORS 是这里的问题,还是我需要以某种方式延迟加载?任何想法表示赞赏。
【问题讨论】:
-
延迟抓取,直到页面为您提供了您正在寻找的所有内容,或者使用超时,或者将抓取链接到页面加载的完成事件中。
-
超时是不行的。我在等待 10 秒后得到相同的空白页面。
-
PhantomJS 是什么版本?
page.onError回调说什么?您是否有 使用 node.js 进行此抓取,或者原始 PhantomJS 脚本可以做到吗?你能透露抓取的网址吗? -
@Vaviloff 感谢您的回复。我实际上能够使用 Nightmare 解决这个问题,这是一个基于 phantomjs 的框架。如果您好奇,文档在 github 上,但是使用 Nightmare 我能够使用 JS 加载浏览器,从而按预期呈现页面。明天,我将尝试提取我需要的 HTML。
-
Nightmare 所做的一切,都可以在 node.js+phantomjs 或仅在 PhantomJS 中完成。可惜你没有分享你的代码,可能有某种问题。
标签: javascript html node.js phantomjs