没有用爬虫框架纯手撸 python 代码。
如果我在读取上次异常终止的参数后,插入数据库时检查记录是否存在( if exists ),是否会很影响整体速度?虽然每条数据都会有一个唯一 id 。需要爬的最终数据条数应该在几百万级(单指存 id 的表)。
1
hard2reg OP id 设置主键索引了。如果是我杞人忧天了请告诉我。
|
![]() |
2
lisxour 2024-02-02 17:39:10 +08:00 ![]() 把 id 放 redis 去重会比较好
|
4
renmu 2024-02-02 17:57:21 +08:00 via Android
直接插,然后重复会报错(狗头)
|
5
vacuitym 2024-02-02 18:03:55 +08:00 ![]() 每次 id 插入之前可以试试布隆过滤+redis:id 先布隆过滤,查到的话再去 redis ,真有数据就跳过
|
![]() |
6
feiniu 2024-02-02 18:04:51 +08:00 ![]() 断点续爬。整个任务队列,爬取任务完全完成,数据保存成功后,再删除这个任务。
这样也能杜绝大部分重复 |
![]() |
7
Maerd 2024-02-05 17:08:43 +08:00 ![]() 百万级基本不用考虑这个问题,公司的某项目日入数据量达到千万级,使用索引去重才出现性能问题,注意是日入
|
![]() |
8
ConnorZhang776 2024-02-18 12:30:18 +08:00
我赞同使用 bloomFilter + redis 的方法,非常实用,只需要一个简单的 hash 就可以确定是否存在,且可以自定义重复率,个人觉得非常实用
|
9
TTTSHU 362 天前
可以将 bloomFilter + redis 和 唯一索引 结合起来使用,既不会太影响性能又能保证去重效果
|