nyse
V2EX  ›  问与答

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

  •  
  •   nyse · Aug 15, 2018 · 2420 views
    This topic created in 2850 days ago, the information mentioned may be changed or developed.

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

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

    4 replies    2018-08-15 10:33:55 +08:00
    liuweisj
        1
    liuweisj  
       Aug 15, 2018
    把所有需要更新的内容拼接在一起做 hash,用 BloomFilter 判断是否更新
    jookr
        2
    jookr  
       Aug 15, 2018
    采集的那个 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
       Aug 15, 2018
    @jookr #2 你这样只能解决判断是否存在的问题,但存在的话每次都更新,而没有判断是否有更新。
    jookr
        4
    jookr  
       Aug 15, 2018
    结合 1 楼的方法 有更新了就更新 utime
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   956 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:37 · PVG 03:37 · LAX 12:37 · JFK 15:37
    ♥ Do have faith in what you're doing.