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

hoj*_*oju 3 database filesystems web-crawler

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

建议?

将 URL 映射到某个文件名以便可以平面存储?或者只是将其放入 SQLite 等数据库中以避免文件系统限制?

mjv*_*mjv 5

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

  • 使用 RDBMS(某种 SQL 服务器)来存储与页面关联的元数据。
    此类信息将存储在一个简单的表中(可能有很少的支持/相关表),其中包含诸如 Url、FileName(您将保存它的位置)、存储在文件中的偏移量等字段(想法是保留几页)在同一文件中)抓取日期、大小和一些其他字段。
  • 使用平面文件存储来存储正确的文本。
    文件名和路径无关紧要(即路径可能很浅并且名称神秘/自动生成)。该名称/路径存储在元数据中。多个爬网页面存储在同一个平面文件中,以优化操作系统管理过多文件的开销。文本本身可以在每页的基础上进行压缩(ZIP 等)(通过压缩更大的块几乎没有额外的压缩增益。),允许按文件处理(无需解压缩之前的所有文本! )。使用压缩的决定取决于多种因素;就 CPU 而言,压缩/解压缩开销通常相对较小,并且可以很好地节省 HD 空间和磁盘 I/O 性能。

这种方法的优点是 DBMS 仍然很小,但可用于 SQL 驱动的查询(临时或编程性质)以根据各种条件进行搜索。在 SQL 服务器本身内存储许多/大文件通常没有什么好处(而且很令人头疼)。此外,在处理/分析每个页面时,可以将附加元数据(例如标题、语言、最重复的 5 个单词等)添加到数据库中。