1

我正在用 Python 编写一个网络爬虫,它将在 MySQL 数据库中存储大量页面的 HTML 代码。在开始处理数据之前,我想确保我的存储和处理方法是最佳的。我想:

  • 最小化数据库中使用的存储空间——可能通过缩小 HTML 代码、霍夫曼编码或其他某种形式的压缩。我想保持全文搜索该字段的可能性 - 我不知道像霍夫曼编码这样的压缩算法是否允许这样做。

  • 最大限度地减少编码和存储大量行所需的处理器使用量。

有没有人对此或类似问题有任何建议或经验?鉴于 Python 将需要大量 HTTP 请求和正则表达式以及任何最佳压缩,Python 是否是执行此操作的最佳语言?

4

2 回答 2

1

如果您不介意 HTML 对 MySQL 不透明,您可以使用COMPRESS函数来存储数据并使用UNCOMPRESS来检索它。您将无法在 WHERE 子句中使用 HTML 内容(例如使用 LIKE)。

于 2011-11-13T05:42:27.313 回答
0

您实际上需要将源存储在数据库中吗?

无论如何,尝试对数据运行“LIKE”查询将耗费大量时间。

将原始数据作为标准文件存储在文件系统上。只是不要将它们全部放在一个文件夹中。使用 id 的哈希值,将它们存储在可预测的文件夹中。

(当然,将文本存储在数据库中是完全可能的,但它会增大数据库的大小,并使其更难使用。备份(很多!)更大,更改存储引擎,变得更加痛苦等。您的文件系统,通常只是添加另一个硬盘的情况。这对于数据库来说并不那么容易 - 你开始需要分片)

...要对数据进行任何类型的搜索,您需要查看构建索引。我只有 SphinxSearch 的经验,但它允许您在输入数据库中指定文件名。

于 2011-11-15T19:14:30.100 回答