接触过爬虫的同学都知道,如果爬虫爬取的网页URL地址不去重的话,会陷入死循环中。这是非常不好的现象,所以下面就来讲一下爬虫的去重策略。
1.
将访问过的URL保存到数据库中,获取下一个URL之后从数据库中读取保存过的URL看是否重复。
优点:简单易行。
缺点:由于数据库读取占不少的内存和资源,速率不是很快,效率低下且数据量一大就很消耗时间,所以这种方式不推荐,特别是数据量比较庞大的时候。
2.
将访问过的URL保存到Set中,只需要O(1)的代价就可以查询URL。
优点:时间效率高。
缺点:内存占用过大。在python中一亿条URL大概占用内存1000000002byte50个字符/1024/1024/1024 = 9G
3.
URL经过md5等方法哈希后保存到set中
通过md5编码可以将字符串长度固定在指定位置,从而节省大量空间。Scrapy框架就是采用这个。
4.
用bitmap的方法,将访问过的URL通过hash函数映射到某一位
优点:进一步压缩内存。
缺点:容易产生地址冲突。所以这种方式也是不太推荐的。
5.
bloomfilter方法对bitmap进行改进,多重hash函数降低冲突。
爬虫去重策略
最新推荐文章于 2024-08-18 22:43:10 发布