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

爬虫抓取数据,每次都要去数据库匹配有没有更新,有什么优化思路吗?

  •  
  •   nyse · 2018-08-15 09:44:15 +08:00 · 1993 次点击
    这是一个创建于 2318 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写了个爬虫,不定时运行抓取某列表,循环列表每一条目,再读取数据库数据库对应条目,判断是否存在,不存在则插入,存在则判断哪些字段有更新,再更新上去。

    虽然数据库服务器专门给这爬虫用,也没有什么性能问题,但是感觉这样比较死板,请问大家也没有遇到过类似的需求,是怎么处理的?

    4 条回复    2018-08-15 10:33:55 +08:00
    liuweisj
        1
    liuweisj  
       2018-08-15 09:59:17 +08:00
    把所有需要更新的内容拼接在一起做 hash,用 BloomFilter 判断是否更新
    jookr
        2
    jookr  
       2018-08-15 10:05:09 +08:00
    采集的那个 URL 或者文件名肯定不是重复的吧?设置成唯一
    ```
    INSERT INTO `log` (`target_id`,`mobile`,`content,`ctime`) VALUES ('13','13888888888','不确定的内容',unix_timestamp(now())) ON DUPLICATE KEY UPDATE `content`='不确定的内容',`utime`=unix_timestamp(now());
    ```
    就可以不存在则插入,存在则更新了。
    nyse
        3
    nyse  
    OP
       2018-08-15 10:12:47 +08:00
    @jookr #2 你这样只能解决判断是否存在的问题,但存在的话每次都更新,而没有判断是否有更新。
    jookr
        4
    jookr  
       2018-08-15 10:33:55 +08:00
    结合 1 楼的方法 有更新了就更新 utime
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3294 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:01 · PVG 20:01 · LAX 04:01 · JFK 07:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.