2014-09-11 80 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庫和官方回購更改。