去重规则
默认的去重规则就是先建立一个集合,然后每次请求前先到这个集合中看是否有这个请求的url,没有则发送请求.ulr会被request_fingerprint函数转换成固定长度的字符串,这个字符串是唯一的,方便存储到数据库中.
a. 编写类
from scrapy.dupefilter import BaseDupeFilter
from scrapy.utils.request import request_fingerprint
class XdbDupeFilter(BaseDupeFilter):
def __init__(self):
self.visited_fd = set()##建立机核
@classmethod
def from_settings(cls, settings):
return cls()
def request_seen(self, request):
fd = request_fingerprint(request=request)
if fd in self.visited_fd:#在集合中说明请求过此url
return True
self.visited_fd.add(fd)#没有则说明没有请求过
def open(self): # can return deferred
print(&#