根据一些业务需求,在爬虫的过程中由于一些网络或者人为的原因终止了爬虫流程,下次发起爬虫请求时,会重新开始,导致原来爬虫过的数据会重复爬取。
为了解决重复爬取,同时也是为了对爬取的数据进行一个筛选,就需要用到增量式爬虫。
增量式爬虫的意义在于,当爬虫流程中断后,下次爬虫请求会紧接着上次中断的地方进行爬取,上次爬取的数据,就不会再发送请求,提高爬虫效率。
增量式爬虫的方法:
第一种: 启用scrapy_redis
scrapy_redis分布式爬虫,在settings.py添加对应的配置,即可实现增量式爬虫。
由于redis增量式的局限性以及适用性太差,除非特定的分布式爬虫,普通的scrapy爬虫不推荐。
第二种:使用scrapy-deltafetch插件实现增量式爬虫
scrapy-deltafetch简介
scrapy-deltafetch通过Berkeley DB来记录爬虫每次爬取收集的request和item,当重复执行爬虫时只爬取新的item,实现增量去重,提高爬虫爬取性能。
Berkeley DB简介
Berkeley DB是一个嵌入式数据库,为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。
主要特点:
嵌入式:直接链接到应用程序中,与应用程序运行于同样的地址空间中,因此,无论是在网络上不同计算机之间还是在同一台计算机的不同进程之间,数据库操作并不要求进程间通讯。 Berkeley DB为