我试图抓取一个网站的内容。我能够使用nodejs获取主页面的HTML,但我发现该页面是动态生成的。资源是从其他来源请求的,而当我在最后抓取HTML时,它们还没有。如何获取动态加载的页面的HTML
我已经通过PhantomJS验证了这一点,它允许我屏幕抓取页面并生成抓取内容的截图。该页面肯定会加载,但它完全没有用处。
我在问的是,这可以做到吗? CORS是这里的问题,还是我需要以某种方式延迟加载?任何想法都表示赞赏。
我试图抓取一个网站的内容。我能够使用nodejs获取主页面的HTML,但我发现该页面是动态生成的。资源是从其他来源请求的,而当我在最后抓取HTML时,它们还没有。如何获取动态加载的页面的HTML
我已经通过PhantomJS验证了这一点,它允许我屏幕抓取页面并生成抓取内容的截图。该页面肯定会加载,但它完全没有用处。
我在问的是,这可以做到吗? CORS是这里的问题,还是我需要以某种方式延迟加载?任何想法都表示赞赏。
如果你使用流,它可能会抓住所有的数据,直到真的没有剩下的东西。使用请求库:
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')
});
有趣的...所以这里的想法是它会实时生成HTML,类似于浏览器请求时如何加载页面? -----为了理智,你能确认我没有遇到任何与他们的JS脚本有关的问题吗?即使在真正的浏览器之外请求时,我也应该能够加载这些内容? –
噩梦JS是这里的解决方案......使用梦魇我能打开浏览器并做各种疯狂的东西。
对于那些好奇的人来说,这些文档可以在GitHub和他们的网站上找到。
对于那些遇到类似问题的人,我真的建议检查一下。
延迟抓取,直到页面为您提供了所有要查找的内容,包括超时或将抓取链接到页面加载完成事件中。 –
超时是不行的。我在10秒后得到相同的空白页面。 –
PhantomJS是什么版本?什么'page.onError'回调说?你*有*使用node.js这个刮或可以一个原始的PhantomJS脚本吗?你能透露刮过的网址吗? – Vaviloff