Crawlee教程:如何将当前处理的URL重新加入请求队列
如何将当前处理的URL重新加入请求队列并设置延迟抓取
要实现将正在处理的URL重新加入请求队列并延迟抓取,你可以直接在requestHandler中复用当前请求的地址,通过配置delay参数设置等待时间,同时绕过默认的URL去重机制。以下是调整后的实现方案:
关键修改说明
- 复用当前请求URL:直接使用
request.url获取正在处理的地址,避免硬编码带来的维护问题 - 设置延迟时间:通过
delay参数指定延迟毫秒数,控制再次抓取的时机 - 强制加入队列:添加
force: true参数,绕过Crawlee默认的URL去重逻辑,确保重复URL能被加入队列
完整代码示例
import { RequestQueue, CheerioCrawler, Configuration } from "crawlee"; const config = Configuration.getGlobalConfig(); config.set('persistStorage', false); config.set('purgeOnStart', false); const requestQueue = await RequestQueue.open(); await requestQueue.addRequest({ url: "https://www.google.com/" }); const crawler = new CheerioCrawler({ requestQueue, async requestHandler({ request }) { console.log(`正在处理: ${request.url}`); console.log("处理抓取到的数据..."); // 将当前URL重新加入队列,设置5秒延迟(5000毫秒) await crawler.addRequests([{ url: request.url, delay: 5000, force: true }]); } }); await crawler.run();
补充说明
你之前配置的persistStorage: false和purgeOnStart: false已经正确关闭了持久化存储,避免了缓存状态对重复抓取的干扰,无需额外调整。
内容的提问来源于stack exchange,提问作者Jaanis
相关产品推荐
相关产品推荐

