Есть два подхода, которые вы можете использовать. Во-первых, вы можете использовать публичный актер Puppeteer Scraper , который позволяет вам использовать большинство функций Apify SDK в упрощенной форме, а конфигурация максимальная глубина сканирования доступна в качестве простого ввода. в разделе Производительность и ограничения . Чтобы узнать основы, посетите вводное руководство .
Второй подход более сложный и использует Apify SDK напрямую. Со всеми вашими запросами вы можете передавать произвольные пользовательские данные, используя свойство request.userData
. Таким образом, прежде чем добавлять дополнительные страницы в очередь сканирования, вы можете проверить, не достигли ли вы необходимой глубины:
const MAX_DEPTH = 4;
// When creating the request queue, we seed the first request with a depth of 0.
const requestQueue = await Apify.openRequestQueue();
await requestQueue.addRequest({
url: "https://stackoverflow.com",
userData: {
depth: 0,
}
});
// ...
// Then, somewhere in handlePageFunction, when adding more requests to the queue.
if (request.userData.depth < MAX_DEPTH) {
await requestQueue.addRequest({
url: "https://example.com",
userData: {
depth: request.userData.depth + 1,
}
});
}