安装Scrapy-Redis
启动方式和scrapy一样,
只需要在setting里添加固定设置即可
-
使用Redis的set集合来去重
DUPEFILTER_CLASS = “scrapy_redis.dupefilter.RFPDupeFilter” -
增加了调度的配置, 作用: 把请求对象存储到Redis数据, 从而实现请求的持久化.
SCHEDULER = “scrapy_redis.scheduler.Scheduler” -
是否允许暂停
SCHEDULER_PERSIST = True -
连接Redis数据库 配置信息
REDIS_HOST = ‘127.0.0.1’
REDIS_PORT = 6379 -
需要把数据存储到Redis数据库中, 并设置优先级
ITEM_PIPELINES = {
#把爬虫爬取的数据存储到Redis数据库中
‘scrapy_redis.pipelines.RedisPipeline’: 400,
} -
下载延迟,建议开启,
#DOWNLOAD_DELAY = 1 -
spider爬虫文件填写
ex = self.conn.sadd('urls',detail_url)
if ex == 1:
print('该url没有被爬取过,可以进行数据的爬取')
yield scrapy.Request(url=detail_url,callback=self.parst_detail)
else:
print('数据还没有更新,暂无新数据可爬取!')
主要原理就是利用Redis的去重效果,判断该URL是否已经存在,如果存在,则不填写,不存在则爬取并写入