Для моей работы я очищаю веб-сайты и записываю их в gzipped web-архивы (с расширением «warc.gz»). Я использую Python 2.7.11 и библиотеку warc 0.2.1.Python не может полностью прочитать файл «warc.gz»
Я заметил, что для большинства файлов я не могу их полностью прочитать с помощью библиотеки warc. Например, если файл warc.gz имеет 517 записей, я могу прочитать только около 200 из них.
После некоторых исследований выяснилось, что эта проблема возникает только с gzipped-файлами. Файлы с расширением «warc» не имеют этой проблемы.
Я выяснил, что некоторые люди тоже имеют эту проблему (https://github.com/internetarchive/warc/issues/21), в то время как решение для этого не найдено.
Я предполагаю, что может быть ошибка в «gzip» в Python 2.7.11. Может быть, у кого-то есть опыт с этим, и знаете, что можно сделать по этой проблеме?
Заранее благодарен!
Пример:
создать новые warc.gz файлы, как это:
import warc
warc_path = "\\some_path\file_name.warc.gz"
warc_file = warc.open(warc_path, "wb")
Писать записи я использую:
Это создает идеальный "warc.gz" файлы. С ними нет проблем. Все, включая «\ r \ n», являются правильными. Но проблема начинается, когда я читаю эти файлы.
Для чтения файлов я использую:
warc_file = warc.open(warc_path, "rb")
Переберите записи я использую:
for record in warc_file:
...
Проблема заключается в том, что не все записи найдены во время этого цикла для файла «warc.gz» , в то время как все они найдены для файлов «warc». Работа с обоими типами файлов адресуется в самой библиотеке warc.
Пожалуйста, добавьте [MCVE] (http://stackoverflow.com/help/mcve) , минимальный, полный и проверяемый пример. Даже связанная с этим проблема в github довольно расплывчата. –
Ilja, библиотека warc очень маленькая, в действительности нет особого кода. Чтобы создать файл warc.gz, я использую 'self.warc_file = warc.open (self.warc_path," wb ")'. Для записи записей я использую 'record = warc.WARCRecord (payload = value, headers = headers)'. Для чтения записей я использую 'self.warc_file = warc.open (self.warc_path," rb ")' и 'для записи в self.warc_file:'. Проблема в том, что не все записи найдены. –
Я могу приложить пример файла warc.gz, я узнал, как его прикрепить здесь ... –