问题描述
我使用Python Requests 抓取了数千个URL,并将它们的html内容保存在json文件中,如下所示:
[
{"url": "https//someurl.com","html": "<strong>Hello World!<\/strong>"
},{"url": "https//anotherurl.com","html": "<h1>Goodbye World!<\/h1>"
}
]
我最终得到的文件的重量超过2.3 gb(因为这些是具有大量html内容的实际网页)。
我使用了 htmlmin 库,但并没有太大帮助。
我暂时无法使用数据库。因此,我正在寻找一种更有效地存储这些非常大的字符串的方法,如果可能的话,可以将它们存储在json中。
以后,必须检索html进行处理。
我一直在考虑将每个字典拆分为单独的json文件。我可以为每个文件生成一个随机密钥(存储在json文件中),然后在每个包含{"url": "https//someurl.com","html": "<strong>Hello World!<\/strong>"}
的json文件中命名。这样,我可以避免不得不遍历庞大的单个文件来检索正确的html字符串。但这仍然对文件大小没有帮助。
但是,如果我可以将所有内容保存在一个文件中,那就太好了。有想法吗?
解决方法
使用文件
如果您为每个唯一 URL 生成一个唯一 ID,并将 HTML 内容存储在 .zip
或 .gz
文件中,并将唯一 ID 作为文件名会怎样。
在 JSON 文件中,您只需存储指向包含 HTML 内容的文件的 ID。
使用数据库
某些数据库/数据仓库系统(例如 Google's BigQuery)在读取大型数据集方面非常有效。
如果您可以将抓取的输出存储在这样的系统中,即使对于像您这样的大型数据集,在数据中查找某些内容的时间也会大大减少。