python爬虫实例之DuplicationFilter怎样进行筛重
这篇文章给大家分享的是有关python爬虫实例之Duplication Filter怎样进行筛重的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
站在用户的角度思考问题,与客户深入沟通,找到禹王台网站设计与禹王台网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、网站建设、企业官网、英文网站、手机端网站、网站推广、主机域名、虚拟主机、企业邮箱。业务覆盖禹王台地区。
Duplication Filter
Scrapy中用集合实现这个request去重功能,Scrapy中把已经发送的request指纹放入到一个集合中,把下一个request的指纹拿到集合中比对,如果该指纹存在于集合中,说明这个request发送过了,如果没有则继续操作。这个核心的判重功能是这样实现的:
def request_seen(self, request): # self.request_figerprints就是一个指纹集合 fp = self.request_fingerprint(request) # 这就是判重的核心操作 if fp in self.fingerprints: return True self.fingerprints.add(fp) if self.file: self.file.write(fp + os.linesep)
在scrapy-redis中去重是由Duplication Filter组件来实现的,它通过redis的set 不重复的特性,巧妙的实现了Duplication Filter去重。scrapy-redis调度器从引擎接受request,将request的指纹存⼊redis的set检查是否重复,并将不重复的request push写⼊redis的 request queue。
引擎请求request(Spider发出的)时,调度器从redis的request queue队列⾥里根据优先级pop 出⼀个request 返回给引擎,引擎将此request发给spider处理。
有了Duplication Filter组件,对于爬虫找回的数据就可以提供有效的爬取意见,也不用担心爬虫会因为重复的数据而耽误获取的时间和进度了。
感谢各位的阅读!关于python爬虫实例之Duplication Filter怎样进行筛重就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!
文章标题:python爬虫实例之DuplicationFilter怎样进行筛重
地址分享:http://myzitong.com/article/gdejjd.html