Javascript CheerioCrawler:在提取数据之前,如何确保页面已完全加载?

Javascript CheerioCrawler:在提取数据之前,如何确保页面已完全加载?,javascript,web-crawler,puppeteer,apify,Javascript,Web Crawler,Puppeteer,Apify,在过去的两天里,我一直在完善我想要抓取的网站的URL列表。我的脚本(除了数据提取外,基本上与示例相同)正在工作,但存在一个问题。在数据存储中本地保存的某些文档不完整。例如,从示例脚本可以看出,在某些保存的数据中,标题字段为空。在其他方面,这一切都得到了保存。每次保存的唯一字段是url:request.url 我最好的猜测是,我正在爬行的域速度非常慢,从其他域加载了多个脚本,Cheerio只是快速浏览,而不是等到整个页面完全加载后,才提取出它能找到的任何数据,然后继续前进 要爬网的总页数约为250

在过去的两天里,我一直在完善我想要抓取的网站的URL列表。我的脚本(除了数据提取外,基本上与示例相同)正在工作,但存在一个问题。在数据存储中本地保存的某些文档不完整。例如,从示例脚本可以看出,在某些保存的数据中,标题字段为空。在其他方面,这一切都得到了保存。每次保存的唯一字段是
url:request.url

我最好的猜测是,我正在爬行的域速度非常慢,从其他域加载了多个脚本,Cheerio只是快速浏览,而不是等到整个页面完全加载后,才提取出它能找到的任何数据,然后继续前进

要爬网的总页数约为2500页,因此我不介意爬网过程是否缓慢,但我想确保它是完整的


如何确保页面在提取之前已完全加载?我认为
async
函数会自动完成这项工作。

潜在的问题是,该网页使用JavaScript发出的异步XHR调用加载一些内容。使用CheerioScraper,您将从该站点上的第一个请求中获取数据。如果要加载异步内容,则需要使用浏览器打开页面


你只需要使用它就可以做到。它的界面与ChereIOCrawler非常相似。它会为每个请求打开网页。您可以使用Puppeter页面界面中的各种页面来等待您想要获取的内容。

潜在的问题是网页使用JavaScript进行的异步XHR调用加载一些内容。使用CheerioScraper,您将从该站点上的第一个请求中获取数据。如果要加载异步内容,则需要使用浏览器打开页面


你只需要使用它就可以做到。它的界面与ChereIOCrawler非常相似。它会为每个请求打开网页。您可以使用Puppeter页面界面中的各种页面来等待想要获取的内容。

CheerioCrawler
使用库,它是一个简单的HTML解析器。它无法执行JavaScript、下载其他资产或发出AJAX请求以获取其他数据


如果您看到的结果不完整,这意味着您尝试刮取的页面会动态加载数据,因此这些数据在Cheerio解析的初始HTML中不可用。可悲的是,这是技术的局限性。要呈现页面并等待加载,您可以使用浏览器来完成繁重的工作。请参阅。

CheerioCrawler
使用该库,它是一个简单的HTML解析器。它无法执行JavaScript、下载其他资产或发出AJAX请求以获取其他数据

如果您看到的结果不完整,这意味着您尝试刮取的页面会动态加载数据,因此这些数据在Cheerio解析的初始HTML中不可用。可悲的是,这是技术的局限性。要呈现页面并等待加载,您可以使用浏览器来完成繁重的工作。看