#python #html #json #storing-data
#python #HTML #json #хранение данных
Вопрос:
Я очистил несколько тысяч URL-адресов с помощью запросов на Python и сохранил их HTML-содержимое в файле json следующим образом:
[
{"url": "https//someurl.com",
"html": "<strong>Hello World!</strong>"
},
{"url": "https//anotherurl.com",
"html": "<h1>Goodbye World!</h1>"
}
]
В итоге я получаю файл весом более 2,3 Гб (поскольку это реальные веб-страницы с большим HTML-контентом).
Я использовал библиотеку htmlmin, но это не очень помогло.
Я пока не могу использовать базу данных. Итак, я ищу способ хранить эти очень большие строки намного эффективнее, если это возможно, в формате json.
Позже HTML-код необходимо будет извлечь для обработки.
Я думал о разделении каждого словаря на отдельные файлы json. Я мог бы для каждого файла сгенерировать случайный ключ (для сохранения в файле json), назвать каждый файл json, содержащий {"url": "https//someurl.com", "html": "<strong>Hello World!</strong>"}
после него. Таким образом, я мог бы избежать необходимости перебирать огромный отдельный файл для извлечения нужной HTML-строки. Однако это все равно не помогает с размером файла.
Но было бы неплохо, если бы я мог хранить все в одном файле. Есть идеи?
Ответ №1:
Использование файлов
Что, если вы сгенерируете уникальный идентификатор для каждого уникального URL-адреса и сохраните содержимое HTML в .zip
или .gz
файле с уникальным идентификатором в качестве имени файла.
Затем внутри файла JSON вы могли бы просто сохранить идентификатор, указывающий на файл с содержимым HTML.
Использование базы данных
Некоторые системы баз данных / хранилищ данных, такие как, Google BigQuery, очень эффективны при чтении больших наборов данных.
Если бы вы могли хранить свои очищенные выходные данные в подобной системе, время поиска чего-либо в ваших данных значительно сократилось бы, даже для таких больших наборов данных, как ваш.