我试图抓一个网站寻找内容。我能够使用nodejs获取主页的HTML,但我发现页面是动态生成的。其他来源要求提供资源,而且当我抓住HTML时,它们还没有。
我已经通过PhantomJS验证了这一点,它允许我对屏幕进行屏幕抓取并生成截图。页面肯定会加载,但它完全是贫瘠的。
我要问的是,这可以吗? CORS是问题吗,还是我需要以某种方式延迟加载?任何想法都表示赞赏。
答案 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及其网站上找到该文档。
对于那些遇到类似问题的人,我建议您查看。