Apify中请求之间的延迟

时间:2019-09-12 19:26:54

标签: web-scraping delay apify

Apify's legacy Crawler有一个randomWaitBetweenRequests选项。

  

此选项强制搜寻器确保打开两个网页之间的时间间隔最短,以防止其使目标服务器超载。

Apify Actor是否具有类似的设置?如果是这样,它将如何影响Actor Units的计算?

1 个答案:

答案 0 :(得分:1)

apify/web-scraper中没有类似的选项,这些选项应替代旧版爬网程序选项。

但是有一种方法可以在pageFunction中自己实现。您可以简单地使用context.waitFor()函数,并以ms为单位传递随机时间。

async function pageFunction(context) {
    const { request, log, jQuery } = context;

    // To be able to use jQuery as $, one needs save it into a variable
    // and select the inject jQuery option. We've selected it for you.
    const $ = jQuery;
    const title = $('title').text();

    log.info(`URL: ${request.url} TITLE: ${title}`);

    // This waits time in ms, which getRandomWait returns.
    await context.waitFor(getRandomWait());

    // To save data just return an object with the requested properties.
    return {
        url: request.url,
        title
    };
}

如果您想在apify /网络抓取工具中使用此选项,则可以在GitHub repo上提交问题。