天天看点

Scrapy去重

一、原生

1、模块

2、RFPDupeFilter方法

a、request_seen

核心:爬虫每执行一次yield Request对象,则执行一次request_seen方法

作用:用来去重,相同的url只能访问一次

实现:将url值变成定长、唯一的值,如果这个url对象存在,则返回True表名已经访问过,若url不存在则添加该url到集合

1)、request_fingerprint

作用:对request(url)变成定长唯一的值,如果使用md5的话,下面的两个url值不一样

注意:request_fingerprint() 只接收request对象

2)、request_seen

b、open

父类BaseDupeFilter中的方法,爬虫开始时,执行

c、close

爬虫结束时执行

d、log

记录日志

e、from_settings

原理及作用:和pipelines中的from_crawler一致

二、自定义

待续

1、配置文件(settings.py)

2、自定义去重类(继承BaseDupeFilter)

3、前提条件

yield request的对象

dont_filter不能为True,这个值默认为False

继续阅读