如何存储从网站抓取的数据

时间:2010-03-17 04:19:30

标签: database filesystems web-crawler

我想抓取网站并将内容存储在我的计算机上以供日后分析。但是我的OS文件系统对子目录的数量有限制,这意味着存储原始文件夹结构不起作用。

连连呢?

将网址映射到某个文件名,以便可以平展存储?或者只是将其推送到像sqlite这样的数据库中以避免文件系统限制?

3 个答案:

答案 0 :(得分:3)

这一切都取决于您打算抓取的文本和/或网页的有效数量。通用解决方案可能是

  • 使用RDBMS(各种SQL服务器)存储与页面关联的元数据 这样的信息将存储在一个简单的表中(可能只有很少的支持/相关表),其中包含Url,FileName(你将保存它)的字段,File中的Offset存储(想法是保留几个页面)在同一文件中)抓取日期,大小和其他一些字段。
  • 使用平面文件存储来正确显示文本。
    文件名和路径很少(即路径可能很浅,名称含糊不清/自动生成)。该名称/路径存储在元数据中。多个已爬网页面存储在同一个平面文件中,以优化操作系统中管理太多文件的开销。文本本身可以在每页上压缩(ZIP等)(通过压缩更大的块来获得额外的压缩增益。),允许每个文件处理(不需要在它之前解压缩所有文本! )。使用压缩的决定取决于各种因素;压缩/解压缩开销通常相对最小,以CPU为单位,并且可以很好地节省HD空间和磁盘I / O性能。

这种方法的优点是DBMS仍然很小,但可用于SQL驱动的查询(ad-hoc或编程性质)来搜索各种标准。在SQL服务器本身中存储许多/大文件通常几乎没有收获(并且很多令人头痛)。此外,当每个页面被处理/分析时,可以将额外的元数据(例如标题,语言,大多数重复的5个单词,等等)添加到数据库中。

答案 1 :(得分:1)

将其置于数据库中将有助于搜索内容和页面元数据。您还可以尝试内存数据库或“memcached”,如存储,以加快速度。

答案 2 :(得分:1)

根据将进行数据挖掘的PC的处理能力,您可以将已删除的数据添加到可压缩存档(如7zip,zip或tarball)中。您将能够保持目录结构的完整性并最终节省大量磁盘空间 - 如果这恰好是一个问题。

另一方面,像SqLite这样的RDBMS会非常快速地爆发,但不会想到可笑的长目录层次结构。