Scrapy框架-去重原理讲解、数据收集以及信号量知识
scrapy的去重原理 信号无处不在 【知其然且知其所以然,才能够更好的理解这个框架,而且在使用和改动的时候也能够想出更合理的方法。】 (开始测试前,到settings.py中注释掉下载中间件的设置,这里用jobbole爬虫来测试,所以之前写的调用chrome的两个方法init和spider_closed都要注释掉。) 这里你们可以用自己的爬虫来测试,不一定要按我的来测试。 到scrapy源码包 [项目\Lib\site-packages\scrapy\dupefilters.py] 里面找去重的代码,RFPDupeFilter类就是去重器,里面有个方法叫做request_seen,它在scheduler(发起请求的第一时间)的时候被调用。它代码里面调用了request_fingerprint方法(就是给request生成一个指纹),连续两次跟进代码就进入到了request.py文件的request_fingerprint方法中,方法中有一句代码: fp = hashlib.sha1() … … cache[include_headers] = fp.hexdigest() 就是给每一...