增量式爬虫
啥是增量式爬虫?
增量式爬虫就是爬取那些更新频率很快的网站,但是我们又不想每次都删库再建库,所以有了增量式爬虫。效果是将爬虫内容在数据库中进行判断,如果不存在则存入,存在则不存入的一个爬虫。
我们用什么数据库?
在这里我使用的是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
这样就可以完成增量式爬虫的实现过程,增量式爬虫的最主要核心就是去重,解决去重方式即可,方法很多,这里只是一种方式,但是比较简单省事。