V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
solomaster
V2EX  ›  问与答

大家在爬虫爬数据的时候都是怎么过滤>>数据库里存在<<的重复数据的?

  •  
  •   solomaster · 2016-06-24 19:03:45 +08:00 · 4838 次点击
    这是一个创建于 3074 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如,我每天爬新闻,爬文章,内存中可以用 set 或者算法来做过滤,但是已经存到数据库的数据,如何保证你抓取的时候不重复呢?
    目前我是把网址 hash 之后存了个字段在数据库,每次网址的时候都去做判断。感觉太粗糙,而且数据量大了,就算 hash 做了索引,每次判断也很拖性能吧?
    大家有啥好的办法么?
    9 条回复    2016-06-25 15:56:12 +08:00
    binux
        1
    binux  
       2016-06-24 19:12:17 +08:00
    读一下能耗多少性能啊。你爬的数据量大还是用户的访问量大。
    ooonme
        2
    ooonme  
       2016-06-24 19:13:13 +08:00 via iPhone
    一般爬的时候不判重,下游数据清洗的时候解决重复问题
    solomaster
        3
    solomaster  
    OP
       2016-06-24 19:28:32 +08:00
    @binux 爬的数据量大。但是现在还没到瓶颈。只是有这个担忧。
    solomaster
        4
    solomaster  
    OP
       2016-06-24 19:34:30 +08:00
    @ooonme 下游清洗数据之后,会删除爬虫数据库的原始数据么?
    kslr
        5
    kslr  
       2016-06-24 19:34:31 +08:00
    @solomaster 最简单的就是最好用的,你硬要折腾可以看看布隆过滤器。
    ooonme
        6
    ooonme  
       2016-06-24 19:43:57 +08:00 via iPhone
    5 楼说了,用过滤就好了,数据分析一般不修改数据只做转换
    keysona
        7
    keysona  
       2016-06-24 20:29:10 +08:00
    url 判重的看布隆过滤器吧。
    数据的话查一下就好吧....
    warmheartli
        8
    warmheartli  
       2016-06-25 14:36:20 +08:00
    看你是想过滤 url 重复的还是过滤内容重复的,过滤 url 那就 url 去重没什么好说的,如果想对内容去重,可以先粗算再精算,粗算就是采取找到正文里句子最长的那个句子,算签名去重,精算就是当发现签名一样的时候再挨个句子判断
    askfermi
        9
    askfermi  
       2016-06-25 15:56:12 +08:00
    网址的话用 Bloom Filter
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1148 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:37 · PVG 02:37 · LAX 10:37 · JFK 13:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.