爬虫中去重的几种策略

1. 数据库

将访问过的url保存到数据库中,每次爬取时搜索。

2. URL -> HashSet

使用java中的HashSet不能重复的特点去重。优点是容易理解。使用方便。webmagic 默认采用的是这种方式

缺点:占用内存大,性能较低。

3. md5(URL) -> HashSet

url经过md5等方法哈希后保存到set中,scrapy采用的是这种方式

4. bitmap url + HashSet

使用bitmap方法,将访问过的url通过hash函数映射到某一位(bit)

缺点:冲突会非常高

5. Redis去重

使用Redis的set进行去重。优点是速度快(Redis本身速度就快),而且不会占用爬虫服务器的资源,可以处理更大数据量的数据爬取。

缺点:需要准备Redis服务器,增加开发和使用成本。

6. 布隆过滤器(BloomFilter

使用布隆过滤器也可以实现去重。优点是占用的内存要比使用HashSet要小的多,也适合大量数据的去重操作。

缺点:有误判的可能。没有重复可能会判定重复,但是重复数据一定会判定重复。

发布了108 篇原创文章 · 获赞 48 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/larry1648637120/article/details/105422629