增量式爬虫

 啥是增量式爬虫?

  增量式爬虫就是爬取那些更新频率很快的网站,但是我们又不想每次都删库再建库,所以有了增量式爬虫。效果是将爬虫内容在数据库中进行判断,如果不存在则存入,存在则不存入的一个爬虫。

我们用什么数据库?

  在这里我使用的是redis数据库,因为增量式爬虫的最主要核心就是去重,而redis中有set方法,用于去重很方便。

判断网站中的内容是否存储过的方法?

  我将网站的内容分为两种,一种是内容少的,一种是内容多的。

  内容少的就直接将数据存储到redis数据库中,然后通过数据库的查询判断一下。

  # 创建连接对象

  conn = Redis(host='127.0.0.1',port=6379)

  # 向redis数据库里面添加内容,如果返回的是1,则没有存储过内容,将爬取的内容存到数据库,如果返回的是0,则证明存储过内容,这样直接pass

  ex = conn.sadd(key,value)

  if ex == 1:

    # 发请求,获取详情页面数据

    yield scrapy.Request(url=url,callback=slef.函数名)

  else:

    pass

  内容多的就可以通过将内容进行hashlib进行唯一加密,生成数据指纹,然后判断加密内容与数据库中的内容是否一致

  # 导包

  import hashlib

  # 自己定制一种形式的数据指纹

  source = '所有数据进行内容拼接'

  # 进行hash加密

  hashValue = hashlib.sha256(source.encode()).hexdigest()

  # 然后向数据库里面存储

  ex = conn.sadd(key,hashValue)

  # 进行判断

  if ex == 1:

    # 发请求,获取详情页面数据

    yield scrapy.Request(url=url,callback=slef.函数名)

  else:

    pass

 

这样就可以完成增量式爬虫的实现过程,增量式爬虫的最主要核心就是去重,解决去重方式即可,方法很多,这里只是一种方式,但是比较简单省事。

posted on 2019-10-29 09:32  请叫我山楂熊°  阅读(203)  评论(0编辑  收藏  举报

导航