Эффективный способ хранения HTML в json

#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, очень эффективны при чтении больших наборов данных.

Если бы вы могли хранить свои очищенные выходные данные в подобной системе, время поиска чего-либо в ваших данных значительно сократилось бы, даже для таких больших наборов данных, как ваш.