前言
本章内容是如何对爬取的数据进行去重,当你爬取了很多内容之后,这个去重复就尤为重要。
去重方法
对URL进行去重(判断URL是否重复)
对数据进行去重(判断是否是重复数据)
代码实现
URL去重
1
2#dont_filter=False 就是url是否处理的意思,有一个自带的过滤器
yield scrapy.Request(url, self.parse, dont_filter=False)数据去重
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15from scrapy.exceptions import DropItem
class DuplicatesPipeline(object):
def __init__(self):
#set为集合,集合为数据不重复无排序的
self.data_set = set()
def process_item(self, item, spider):
data = item['data']
#如果数据已经存在,抛出DropItem异常,丢弃item数据,不会再传给后面继续处理
if data in self.data_set:
raise DropItem("Duplicate item found: %s" % item)
#不存在时,就添加数据
self.data_set.add(item['data'])
return item