如何获取动态加载的页面的HTML

时间:2017-05-28 22:03:50

标签: javascript html node.js phantomjs

我试图抓一个网站寻找内容。我能够使用nodejs获取主页的HTML,但我发现页面是动态生成的。其他来源要求提供资源,而且当我抓住HTML时,它们还没有。

我已经通过PhantomJS验证了这一点,它允许我对屏幕进行屏幕抓取并生成截图。页面肯定会加载,但它完全是贫瘠的。

我要问的是,这可以吗? CORS是问题吗,还是我需要以某种方式延迟加载?任何想法都表示赞赏。

3 个答案:

答案 0 :(得分:0)

如果你使用流,它可能能够获取所有数据,直到真的没有任何东西。使用请求库:

const writeStream = fs.createWriteStream('somefile.txt');
request('http://google.com').pipe(writeStream);

如果你想要更多控制:

const writeStream = fs.createWriteStream('somefile.txt');
const r = request('http://google.com');
r.pipe(writeStream)
r.on('data', data => {
  console.log('Grabbing data!');
});

r.on('end', () => {
  console.log('data grabbing has ended')
});

答案 1 :(得分:0)

我相信它可以使用幻像完成,但我发现casperJS很简单。它建立在PhantomJS之上,但更简单。它允许您访问DOM中的iframes,您还可以使用waitfor函数,它允许您在执行/抓取之前等待特定的选择器或其他资源,这在处理动态页面时非常有用。 / p>

答案 2 :(得分:-1)

Nightmare JS就是这里的解决方案......使用梦魇我可以打开浏览器并做各种疯狂的事情。

对于那些好奇的人,可以在GitHub及其网站上找到该文档。

对于那些遇到类似问题的人,我建议您查看。

Nightmare JS website Nightmare GitHub