我应该如何在我的webapp中存储已删除的HTML?

时间:2012-11-30 00:25:01

标签: ruby-on-rails screen-scraping web-scraping

我是网络开发的新手(以及一般的开发),我正在构建一个从第三方网站上删除数据的rails应用程序。我正在使用Nokogiri来解析我感兴趣的特定html元素,这些元素存储在数据库中。

然而,我想保存整个页面的html,我正在备份,以防万一我改变主意我想要什么类型的信息,以防网站删除网站(或更新)它)。

存储归档html的最佳做法是什么? 我应该将其作为字符串提取并将其放入数据库中,将其写入日志或文本文件,还是将其写入?

修改 我应该澄清一下。我每周都会抓住10K网站的订单,如果我重新定义了我想要的数据类型,我预计只需要一次性访问备份。

举个例子,如果是抓取国家人口数据上的联合国数据,最初是在查看年龄分布但后来意识到我也希望得到性别分布,我想回到我所有的HTML档案和拉出数据。我预计这种情况不会发生太多(可能每月1-3次),但是当它发生时,我会想要在10K-100K列表中检索它。任务应该只需要几个小时来完成大约10K的记录,所以我猜每个网站的获取最多只需要一秒钟。我不需要任何版本控制功能。希望这澄清。

2 个答案:

答案 0 :(得分:1)

我不确定这种情况的“最佳做法”是什么(它会因项目的具体情况而异),但作为起点我建议创建一个带有字符串字段的模型用于URL和HTML本身的文本字段,并将页面保存在那里。您可以为URL添加唯一性验证器,以确保不会将相同的HTML存储两次。

然后,您可以选择添加模型方法以从HTML文本启动nokogiri文档,从而使用HTML字符串作为“主”记录(在DB中)并在需要时动态生成nokogiri文档。但是,正如@ dave-newton所指出的那样,其中很多将取决于你将如何处理这个HTML。

答案 1 :(得分:0)

我强烈建议将其保存到与您正在抓取的数据相同的数据库中的表中。为什么要改变哪些有用像往常一样保留所有内容,或者将其全部写入一个单独的数据库,以防万一,并保留一些表格或引用将已删除的数据链接到备份以防万一。