资讯专栏INFORMATION COLUMN

scrapy-redis的布隆去重

jaysun / 1573人阅读

摘要:布隆去重的优点和缺点优点相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。下载布隆过滤器文件,将其拷贝至包中。修改其函数按照分布式爬虫部署步骤,继续进行即可使用布隆去重策略

scrapy-redis的布隆去重

- 为什么要使用布隆去重?

scrapy自带去重机制,即将所需要爬取的网页放在set中来达到去重的目的,但是在实际工作中,我们需要更新数据的时候往往不需要爬取已经爬取过的页面,这时候set去重就达不到目的了,会造成重复爬取url,所以我们要用到布隆去重。

- 布隆去重的优点和缺点

优点

相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。另外, Hash 函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势

缺点

但是布隆过滤器的缺点和优点一样明显。误算率(False Positive)是其中之一。随着存入的元素数量增加,误算率随之增加。但是如果元素数量太少,则使用散列表足矣。

布隆去重的使用方法

打开项目,把scrapy_redis从环境文件中拷贝一份粘贴到scrapy项目中,这样做的目的是为这个项目多带带配置去重方案

而环境中的scrapy_redis却不会变,其他项目不用使用布隆去重方案。

下载 布隆过滤器py文件,将其拷贝至scrapy_redis包中。(这个py文件有很多大牛都有写,课件也有和这个稍有不同原理相同)

修改scrapy_reids中的dupefilter文件,修改其去重策略。

from .BloomfilterOnRedis import BloomFilter

修改其 request_seen函数

if self.bf.isContains(fp):

return True

else:

self.bf.insert(fp)

return False

按照分布式爬虫部署步骤,继续进行即可使用布隆去重策略

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42161.html

相关文章

  • scrapy-redis分布式爬虫框架详解

    摘要:分布式爬虫框架详解随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。下载器中间件位于引擎和下载器之间的框架,主要是处理引擎与下载器之间的请求及响应。 scrapy-redis分布式爬虫框架详解 随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。由于互联网是开放的,每个人都可以在网络上...

    myeveryheart 评论0 收藏0
  • Python微型异步爬虫框架

    摘要:微型异步爬虫框架基于的异步框架,搭建一个模块化的微型异步爬虫。可以对该爬虫的布隆过滤器进行配置,安装中间件等。回调函数整个项目的主要实现在于回调函数的使用,利用异步请求得到响应后马上调用其请求绑定的回调函数来实现爬虫的异步爬取。 Amipy Python微型异步爬虫框架(A micro asynchronous Python website crawler framework) 基于...

    z2xy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<