scrapy是經過hashlib算法轉成長度一致的url,而後再經過set集合去重的,有興趣看源碼算法
去重的中間件在scrapy 的 dupefilters.py文件中:scrapy
--> #去重器函數
RFDupeFilter()
-->有個函數叫url
request_seen() #被scrapy/core/scheduler.py調用
這個是調度器spa
scheduler.py#文件中有個函數叫enqueue_request()的函數 每來一個url就是經過這個函數來執行的
每次執行以前都會調用到 request_seen(request) 這個方法code
這個方法就會生成一個指紋,指紋下面的掉用的就比較複雜了,簡單的說就是要去執行 hashlib.sha1() 這個算法來生成一個固定長度的哈兮值中間件
再而後就是在那個去重器中的blog
self.fingerprints = set()
就是經過上句代碼執行了set集合來去重了源碼