纸飞机数据抓取如何避免抓取到重复无用的数据?

感恩感恩09月19日2268

做 Telegram 百科的时候,用纸飞机抓数据,总是抓重复的,怎么才能抓不到重复的、没用的呢?

4 个回答

aCraft
aCraft回答于 09 月 19 日
最佳答案

这个问题很常见,Telegram抓数据容易重复,主要还是消息流本身就有重合,或者机器人触发逻辑不合理。

第一,用唯一标识去判断,比如message_id或者hash值,本地存一下,下次抓的时候跳过这些ID。

第二,加个过滤规则,比如关键词黑名单,把广告、表情包、空消息都过滤掉,能省下不少无用数据。

第三,控制抓取频率,不要上来就疯狂拉取,给服务器一点喘息的机会,也能减少重复抓到刚发的消息。

这三步搞定,基本上干净多了。

Breeze
Breeze回答于 09 月 24 日

1. 抓数据时设置唯一标识,例如用频道ID或者消息哈希去重;

2. 每次抓完存数据库前先查下是否已存在;

3. 可加个时间过滤,只抓最新的,不抓历史消息;

4. 用正则过滤明显无用信息,例如纯广告或空消息;

5. 定期清理脏数据,保证数据干净。

这么搞,基本不会抓到大量重复的垃圾数据了。

人间游客
人间游客回答于 09 月 25 日

1、加个唯一标识,比如用消息ID或者链接判断,抓过了的就不用重复抓了。

2、数据库去重,抓完自动过滤,防止脏数据混进来。

3、别忘了时间戳,设置好抓取范围,抓新的,旧的跳过。

4、内容去重也挺重要,用关键词或者全文比对,内容一样的直接过滤。

5、最后,把抓取频率调低一点,不要太频繁,也能降低重复率。

aGamer
aGamer回答于 09 月 26 日

1. 用唯一ID过滤。比如用消息ID或链接去重,避免重复存。

2. 加个时间限制。每次抓取加时间范围,比如只抓最近24小时的。

3. 数据入库前校验。比如标题+作者已存在就不再保存。

4. 做个去重缓存池。把最近抓的数据先缓存起来,下次抓之前先比对。

5. 用数据库自带的去重功能。比如MongoDB建唯一索引,可以自动去重。

这样操作,重复内容就少多了。

您的答案