2014-09-11 97 views
3

我试图使用工具箱从下面的链接来打开文件WARC与Python: http://warc.readthedocs.org/en/latest/开放WARC文件

当打开文件:

import warc 
f = warc.open("00.warc.gz") 

一切都很好,在F对象是:

<warc.warc.WARCFile instance at 0x1151d34d0> 

然而,当我试图通过读取文件中的一切:

012出现
for record in f: 
    print record['WARC-Target-URI'], record['Content-Length'] 

以下错误:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/Users/xxx/anaconda/lib/python2.7/site-packages/warc/warc.py", line 390, in   __iter__ 
record = self.read_record() 
File "/Users/xxx/anaconda/lib/python2.7/site-packages/warc/warc.py", line 373, in read_record 
header = self.read_header(fileobj) 
File "/Users/xxx/anaconda/lib/python2.7/site-packages/warc/warc.py", line 331, in read_header 
raise IOError("Bad version line: %r" % version_line) 
IOError: Bad version line: 'WARC/0.18\n' 

这是因为我的WARC文件版本不被我使用的是WARC工具箱或别的什么支持?

+1

这就是错误所说的。 – simonzack 2014-09-11 10:19:04

回答

4

ClueWeb09数据集以WARC 0.18格式提供。但是,它有几个问题。有些记录是malformed

最常见的问题是WARC标题中的额外换行符。还有一些其他格式不正确的标题的情况。

此外,它不使用标准的\ r \ n行尾标记,这实际上是您的问题。

warc-clueweb library可以处理它。这是一个与ClueWeb09 WARC文件一起工作的特殊Python库。根据文件

只对原始库进行了少量修改。 warc库的原始文档仍然保留

+0

嗨,谢谢你的回答。对不起,我暂时搁置了这个项目。但我一回到它就会对此进行测试。再次感谢你。 – user3383348 2015-03-24 14:51:00

0

是的,感谢@eyelash关于这个问题的解释。

其实Clueweb-09中的一些记录格式不正确。但官方的warc库和上面推荐的git repo warc-clueweb library都有一些问题。

此fork回购无法处理Clueweb12数据集,另一个问题是它在处理每个.warc.gz文件时可能会丢失1-2个文档。

所以我改变了一些代码来支持Clueweb09和Cluewe12数据集。这里是我的回购,已经在1000亿页上进行了测试,my warc tools分叉并从warc-clueweb库和官方回购更改。