Web crawler 使用Apify SDK时有没有办法指定最大爬网深度?

Web crawler 使用Apify SDK时有没有办法指定最大爬网深度?,web-crawler,apify,Web Crawler,Apify,我正在做一个项目,我正在评估Scrapy和Apify。大多数代码都以node.js为中心,因此javascript解决方案会很好。此外,我喜欢在Apify中使用木偶演员。这就是说,我的用例需要对许多网站进行相当浅(例如,深度大约为4)的爬网。这在Scrapy中很容易配置,但我不知道如何在Apify中进行配置。有没有办法在新的Apify API中指定最大深度?看起来这是他们的传统爬虫程序中的一个参数,但我在新的API中没有找到它。您可以在中找到“最大爬虫深度”选项。此工具替代了传统的phantom

我正在做一个项目,我正在评估Scrapy和Apify。大多数代码都以node.js为中心,因此javascript解决方案会很好。此外,我喜欢在Apify中使用木偶演员。这就是说,我的用例需要对许多网站进行相当浅(例如,深度大约为4)的爬网。这在Scrapy中很容易配置,但我不知道如何在Apify中进行配置。有没有办法在新的Apify API中指定最大深度?看起来这是他们的传统爬虫程序中的一个参数,但我在新的API中没有找到它。

您可以在中找到“最大爬虫深度”选项。此工具替代了传统的phantomJS刮板。它使用木偶演员,它有一个非常相似的界面


您甚至可以使用PuppeterCrawler自己使用和实现最大深度。我建议使用request.userData记录爬行的深度。如果您对这个解决方案感兴趣,您可以检查它是如何在web scraper中完成的。

您可以采取两种方法。首先,您可以使用public actor,它使您能够以简化的形式使用Apify SDK的大部分功能,max crawl depth configuration作为一个简单的输入在性能和限制部分下提供。要学习基础知识

第二种方法更复杂,直接使用Apify SDK。对于所有请求,可以使用
request.userData
属性向下传递任意用户数据。这样,在向爬网队列添加更多页面之前,可以检查是否未达到所需的深度:

const MAX_DEPTH=4;
//在创建请求队列时,我们将第一个请求的种子深度设置为0。
const requestQueue=wait Apify.openRequestQueue();
wait requestQueue.addRequest({
url:“https://stackoverflow.com",
用户数据:{
深度:0,
}
});
// ...
//然后,在handlePageFunction的某个地方,当向队列添加更多请求时。
if(request.userData.depth
谢谢。这对我来说证实了这一点。只是想确定我没有错过什么。不幸的是,我无法提高投票率,因为我没有足够的声誉:-(谢谢。这就是我所怀疑的。我将使用userData方法。感谢包含代码示例。我会提高投票率,但我没有足够的代表。