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

scrapy 采集数据的时候直接入主库,还是先入临时库呢?主要是担心对方突然改变数据格式或者改变什么,会对我的数据库造成某种伤害,从而导致我的应用崩溃或者工作不正常

  •  
  •   qq5745965425 · 2016-07-15 11:16:52 +08:00 · 1433 次点击
    这是一个创建于 3035 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的网站是用来展示一些信息的

    我打算去采集一些网站的数据,使用 scrapy

    不过我有一些担心,就是担心 如果对方发现我采集,他对他的数据进行一些变动:比如内容超长,改变编码,改变什么

    然后,我的采集程序傻傻的继续采集,然后入库的时候造成严重的结果,比如结果太多,导致数据库用光,或者会不会被 sql 注入把数据库删没了

    我不知道我的担心是不是多余的

    所以我想出了 2 个方案

    (第一个方案) 这个方案 无疑会增加我的很多工作量 我想让爬虫在本地运行,本地架设一个 django+SQLite 的环境,爬虫把数据先存入本地,我在本地人工检验过数据,然后点击上传按钮,才将数据上传到主数据库,这样应该就安全多了,但是这样工作量会很大,要写很多代码

    (第二个方案) 后来我又想了一个方案,就是在主库的表里增加一个字段, status 表示这个数据的状态,默认只展示审核过的数据,而如果状态是没有被审核,那么数据就不展示给用户,但我似乎还是有些担心,担心,对方网站做了什么变动,导致我的爬虫出现 bug ,一次性不小心采集几十万 几千万 的数据,把我的数据库撑爆了就糟了

    似乎我的第二个方案的担心是多余的,好像 scrapy 默认可以过滤数据格式,可以净化数据, 但由于我是一个新手,对这个东西不是很了解,

    所以想提问 请教一下大家, 哪个方案更好呢, 您有更好的方案吗

    能给我一些建议吗

    第 1 条附言  ·  2016-07-15 12:05:53 +08:00
    感谢帮忙,目前打算用方案 2
    5 条回复    2016-07-16 15:12:37 +08:00
    lxy
        1
    lxy  
       2016-07-15 11:44:22 +08:00   ❤️ 1
    限制内容长度。编码可以自动检测。 sql 参数化查询。
    qq5745965425
        2
    qq5745965425  
    OP
       2016-07-15 11:47:27 +08:00
    @lxy 您的意思是,用方案 2 就可以了吗
    lxy
        3
    lxy  
       2016-07-15 11:53:50 +08:00   ❤️ 1
    @qq5745965425 他要加垃圾数据你也没办法。限制一下抓取峰值频率,数据库加个字段 update_time ,计算平均时间内数据增长量,设置警戒值,超过提醒。
    qq5745965425
        4
    qq5745965425  
    OP
       2016-07-15 11:56:36 +08:00
    @lxy 谢谢
    julyclyde
        5
    julyclyde  
       2016-07-16 15:12:37 +08:00
    2 的话 IO 代价比较低
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1080 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:15 · PVG 03:15 · LAX 11:15 · JFK 14:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.