Python无法完全阅读“warc.gz”文件

时间:2016-03-23 09:05:58

标签: python gzip warc

对于我的工作,我抓取网站并将其写入gzip压缩的网络档案(扩展名为“warc.gz”)。我使用Python 2.7.11和warc 0.2.1库。

我注意到对于大多数文件,我无法使用warc-library完全读取它们。例如,如果warc.gz文件有517条记录,我只能阅读其中的大约200条。

经过一些研究后我发现只有gzip压缩文件会出现此问题。扩展名为“warc”的文件没有此问题。

我发现有些人也有这个问题(https://github.com/internetarchive/warc/issues/21),但找不到解决方法。

我猜Python 2.7.11中的“gzip”可能存在错误。也许有人有这方面的经验,并知道可以对这个问题做些什么?

提前致谢!

示例:

我创建了这样的新warc.gz文件:

import warc
warc_path = "\\some_path\file_name.warc.gz"
warc_file = warc.open(warc_path, "wb")

要写我使用的记录:

record = warc.WARCRecord(payload=value, headers=headers)
warc_file.write_record(record)

这会创建完美的“warc.gz”文件。他们没有问题。所有,包括“\ r \ n”都是正确的。但是当我阅读这些文件时,问题就出现了。

要阅读我使用的文件:

warc_file = warc.open(warc_path, "rb")

要遍历我使用的记录:

for record in warc_file:
    ...

问题是在“warc.gz”文件的循环过程中找不到所有记录,而它们都是“warc”文件的所有记录。使用这两种类型的文件在warc-library本身中进行了解决。

1 个答案:

答案 0 :(得分:4)

似乎warc.gzip2.GzipFile中的自定义<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="pros_reviews"> <iframe src="http://www.w3schools.com"></iframe> </div>处理,warc.utils.FilePart文件拆分和warc.warc.WARCReader读取整体打破(使用python 2.7.9进行测试, 2.7.10和2.7.11)。它在receives no data instead of a new header时停止。

看起来基本的stdlib gzip处理链接文件就好了,所以这也应该有效:

gzip