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

2016-07-15 11:16:52 +08:00
 qq5745965425

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

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

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

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

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

所以我想出了 2 个方案

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

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

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

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

能给我一些建议吗

1419 次点击
所在节点    问与答
5 条回复
lxy
2016-07-15 11:44:22 +08:00
限制内容长度。编码可以自动检测。 sql 参数化查询。
qq5745965425
2016-07-15 11:47:27 +08:00
@lxy 您的意思是,用方案 2 就可以了吗
lxy
2016-07-15 11:53:50 +08:00
@qq5745965425 他要加垃圾数据你也没办法。限制一下抓取峰值频率,数据库加个字段 update_time ,计算平均时间内数据增长量,设置警戒值,超过提醒。
qq5745965425
2016-07-15 11:56:36 +08:00
@lxy 谢谢
julyclyde
2016-07-16 15:12:37 +08:00
2 的话 IO 代价比较低

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX