gpt4 book ai didi

java - 如何减少/改变爬行后的延迟?

转载 作者:行者123 更新时间:2023-11-30 03:59:11 24 4
gpt4 key购买 nike

有人使用过 Crawler4j 吗?

我按照 the project page 中的示例进行操作实现自己的爬虫。爬虫工作正常,爬行速度非常快。唯一的问题是我总是有20-30秒的延迟。有没有办法避免等待时间?

最佳答案

刚刚检查了crawler4j source codeCrawerController.start方法有很多固定的 10 秒“暂停”,以确保线程完成并准备好清理。

// Make sure again that none of the threads
// are
// alive.
logger.info("It looks like no thread is working, waiting for 10 seconds to make sure...");
sleep(10);

// ... more code ...

logger.info("No thread is working and no more URLs are in queue waiting for another 10 seconds to make sure...");
sleep(10);

// ... more code ...

logger.info("Waiting for 10 seconds before final clean up...");
sleep(10);

此外,主循环每 10 秒检查一次以了解爬行线程是否完成:

while (true) {
sleep(10);
// code to check if some thread is still working
}

protected void sleep(int seconds) {
try {
Thread.sleep(seconds * 1000);
} catch (Exception ignored) {
}
}

因此,微调这些调用并减少 sleep 时间可能是值得的。

如果您能抽出一些时间,更好的解决方案是重写此方法。我会替换 List<Thread> threads通过 ExecutorService ,其 awaitTermination方法会特别方便。与 sleep 不同,awaitTermination(10, TimeUnit.SECONDS)如果所有任务完成,将立即返回。

关于java - 如何减少/改变爬行后的延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22355130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com