
feapder 去重 Dedup四种去重机制与断点续爬配置【免费下载链接】feapderfeapder is an easy to use, powerful crawler framework | feapder是一款上手简单功能强大的Python爬虫框架。内置AirSpider、Spider、TaskSpider、BatchSpider四种爬虫解决不同场景的需求。且支持断点续爬、监控报警、浏览器渲染、海量数据去重等功能。更有功能强大的爬虫管理系统feaplat为其提供方便的部署及调度项目地址: https://gitcode.com/GitHub_Trending/fe/feapder爬虫任务跑了一夜早上查库却多了 20 万条重复记录更糟的是中断重启后已有 30 万个 URL 又被抓了一遍。这时光靠断点续爬清表重做不够你需要 feapder 的去重模块 Dedup在请求层和入库层把重复挡掉。动手前确认feapder 去重依赖 Redis 与 setting.py开始之前确认以下几点已安装包含feapder/dedup/目录的版本git clone https://gitcode.com/GitHub_Trending/fe/feapder 后执行pip install -e .有一个可用的 RedisBloomFilter 永久去重与 ExpireFilter 临时去重都存在 Redis 中项目目录下已有setting.py由feapder create project生成已读feapder/dedup/__init__.py里 Dedup 构造函数的文档字符串四种filter_type的含义都写在那里开启请求去重打开 REQUEST_FILTER_ENABLE 并选用 ExpireFilter配置模板配置里已预置了这段确认两个参数即可REQUEST_FILTER_ENABLE True REQUEST_FILTER_SETTING dict( filter_type3, # ExpireFilter 临时去重 expire_time2592000, # 30 天 )验证跑一次爬虫让同一个列表页被下发两次。LOG_LEVEL DEBUG下日志会打出request已存在 url ...这行由feapder/buffer/request_buffer.py记录同时 Redis 中会出现dedup:expire_set:2592000开头的 key说明去重库真的写进去了。输出解读filter_type去重机制特点1BloomFilter 永久去重存 Redis一亿条约 285MB2MemoryFilter 内存去重最快进程重启即丢失3ExpireFilter 临时去重超过expire_time秒自动失效4LiteFilter 轻量去重纯内存 set适合短命单进程任务请求去重以请求指纹URL 的 MD5作为 keyto_md5为 False不会二次做 MD5。Item 去重与 filter_exist_data在代码里直接复用 Dedup把ITEM_FILTER_ENABLE True交给框架即可防止重复数据入库补采、多源合并这类场景更常见的是直接拿模块用from feapder.dedup import Dedup dedup Dedup(Dedup.BloomFilter, namesina_news, redis_urlredis://localhost:6379/0) datas [a, b, c] dedup.add([a, b]) # 返回 [1, 1] dedup.filter_exist_data(datas) # datas 原地变为 [c]验证方式dedup.get(a)应返回1Redis 里的 key 是dedup:bloomfilter:sina_news。不传name时所有数据源共用同一个默认去重库。输出含义add返回1首次入库无重复add返回0已存在被拦截filter_exist_data原地剔除列表中已存在的数据返回后的列表可直接下发去重踩坑name 共用、expire_time 缺失、内存库丢失症状换了数据源重启后大量新 URL 被判重复。原因没传name所有源共用默认去重库。规避每个数据源传不同name。症状启动即抛需传参数 expire_time。原因filter_type3必须带expire_time。规避开启临时去重时两者一起给。症状进程重启后旧数据又能被抓一遍。原因2、4 号库在内存里进程死即丢。规避生产长驻任务用 1 或 3 号基于 Redis 的库。症状个别不同数据被误判重复数据量越大越明显。原因布隆过滤器误判默认error_rate0.00001。规避把error_rate调小内存开销随之上升。症状清任务队列时把去重库也清了全量重爬。原因DELETE_KEYS支持正则dedup:前缀被误伤。规避清 key 的正则写精确。去重参数速查表与下一步名称作用默认值修改位置REQUEST_FILTER_ENABLE请求去重开关Falsesetting.pyREQUEST_FILTER_SETTING请求去重类型与过期filter_type3, expire_time2592000setting.pyITEM_FILTER_ENABLE入库去重开关Falsesetting.pyDedup(name)区分不同去重库dedup:bloomfilter:bloomfilter代码Dedup(error_rate)布隆误判率0.00001代码Dedup(to_md5)去重前转 MD5True代码DELETE_KEYS启动时清空的 key[]setting.py先打开REQUEST_FILTER_ENABLE用filter_type3配 30 天expire_time跑一轮增量爬取再数一数日志里request已存在的命中条数。【免费下载链接】feapderfeapder is an easy to use, powerful crawler framework | feapder是一款上手简单功能强大的Python爬虫框架。内置AirSpider、Spider、TaskSpider、BatchSpider四种爬虫解决不同场景的需求。且支持断点续爬、监控报警、浏览器渲染、海量数据去重等功能。更有功能强大的爬虫管理系统feaplat为其提供方便的部署及调度项目地址: https://gitcode.com/GitHub_Trending/fe/feapder创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考