gpt4 book ai didi

java - 并发网络爬虫通常将访问过的 URL 存储在并发映射中,还是使用同步来避免两次抓取相同的页面?

转载 作者:太空宇宙 更新时间:2023-11-04 09:56:56 26 4
gpt4 key购买 nike

我正在尝试编写一个简单的多线程网络爬虫。我看到很多消息来源都在谈论网络爬虫显然是平行的,因为你可以从不同的 URL 开始爬行,但我从来没有看到他们讨论网络爬虫如何处理他们以前见过的 URL。似乎某种全局 map 对于避免一遍又一遍地重新抓取相同的页面是必不可少的,但是关键部分将如何构建?锁的粒度有多细才能最大化性能?我只想看一个不太密集也不太简单的好例子。

最佳答案

特定领域用例:在内存中使用

如果是特定的域名,比如abc.com,那么最好在内存中设置vistedURL或者Concurrent hash map,在内存中检查访问状态会更快,内存消耗也会相对较少。 DB会有IO开销,成本高,访问状态检查会很频繁。它会严重影响你的表现。根据您的用例,您可以在内存或数据库中使用。我的用例特定于访问过的 URL 不会再次访问的域,因此我使用了并发 HashMap 。

关于java - 并发网络爬虫通常将访问过的 URL 存储在并发映射中,还是使用同步来避免两次抓取相同的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405321/

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