scrapy的去重機制


scrapy是通過hashlib算法轉成長度一致的url,然后再通過set集合去重的,有興趣看源碼

去重的中間件在scrapy 的 dupefilters.py文件中:

-->  #去重器

RFDupeFilter()

-->有個函數叫

request_seen()
#被scrapy/core/scheduler.py調用

這個是調度器

scheduler.py#文件中有個函數叫enqueue_request()的函數
每來一個url就是通過這個函數來執行的

每次執行之前都會調用到    request_seen(request)   這個方法

這個方法就會生成一個指紋,指紋下面的掉用的就比較復雜了,簡單的說就是要去執行       hashlib.sha1()       這個算法來生成一個固定長度的哈兮值

再然后就是在那個去重器中的

self.fingerprints = set() 

就是通過上句代碼執行了set集合來去重了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM