爬虫日记(87):Scrapy的RFPDupeFilter类(一)
2023-09-14 09:10:04 时间
前面已经分析了调度器的入队代码,在这里会调用RFPDupeFilter类的功能,用来判断两个下载的url请求是否相同,如果相同,并且参数设置为去重时,就会不再下载,这样避免了重复下载同样的url页面。接着下来我们来分析怎么样实现url相同的判断,是否直接采用字符串相同的判断?还是有什么方法进行判断呢?要解决这些疑问,我们需要把这些代码分析一轮,才能搞明白为什么这样设计,以及这样实现有什么优点。
在开始分析之前,我们先来学习一下python怎么样方便记录一个对象已经查看过。由于一个对象有很多属性,但是唯有一个ID是没有办法的,只要保存这个ID值,就可以判断这个对象是否处理过,这是一种方案。不过在python库里提供了一种更加方便的方案,可以采用弱引用来关注一个对象是否存在,意思就是说这个对象保存在这个容器里,只保证它存在时的有效性,如果对象删除了,在这个容器里也同步删除。这样就可以省了删除的管理操作,不需要增加引用计数。这时需要使用weakref库,这个库实现了一个对象WeakKeyDictionary,
相关文章
- 第三百六十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询
- 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询
- 第三百六十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)倒排索引
- 第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点
- 爬虫部署-2,基于Docker的Scrapy+Scrapyd+Scrapydweb部署
- scrapy怎么同时运行多个爬虫?
- 图解爬虫,用几个最简单的例子带你入门Python爬虫
- Python爬虫:selenium模块基本使用
- Python爬虫:scrapy框架Spider类参数设置
- Python爬虫:scrapy利用html5lib解析不规范的html文本
- Python爬虫:Scrapy从脚本运行爬虫的5种方式
- 爬虫日记(76):Scrapy的命令行源码分析二
- 爬虫日记(75):Scrapy的Settings源码分析
- 爬虫日记(72):Scrapy安装程序入口点分析
- 爬虫日记(29):随机更换scrapy的代理IP地址
- 爬虫日记(23):用scrapy快速地爬取蜂鸟网图片
- 爬虫日记(8):scrapy的安装
- Scrapy - 第一个爬虫和我的博客
- Scrapy爬虫框架详解