2014-09-11 12 views
3

나는 다음과 같은 링크에서 도구 상자를 사용하여 파이썬으로 WARC 파일을 열려고 시도하고있다 : http://warc.readthedocs.org/en/latest/열린 WARC 파일

로 파일을 여는 :

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

다 괜찮 및 f를 객체는 다음과 같습니다

<warc.warc.WARCFile instance at 0x1151d34d0> 

그러나 내가 사용하여 파일에 모든 것을 읽을려고 할 때 :

012 3,516,
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

답변

4

ClueWeb09 데이터 세트는 WARC 0.18 형식으로 제공됩니다. 그러나 몇 가지 문제가 있습니다. 일부 기록은 malformed입니다.

가장 일반적인 문제는 WARC 헤더의 추가 개행 문자입니다. 다른 기형 헤더의 경우도 있습니다.

또한 실제로 문제가되는 표준 \ r \ n 줄 끝 표시를 사용하지 않습니다.

warc-clueweb library으로 처리 할 수 ​​있습니다. 이것은 ClueWeb09 WARC 파일과 함께 작동하는 특수 파이썬 라이브러리입니다. 설명서에 따라

원래 라이브러리를 약간만 수정했습니다. warc 라이브러리의 원본 문서는 여전히 보유하고 있습니다.

+0

안녕하세요. 답변 해 주셔서 감사합니다. 늦어서 미안하지만 지금은이 프로젝트를 제쳐두고 있습니다. 하지만 내가 다시 돌아올 때마다 이것을 시험 할 것이다. 다시 감사합니다. – user3383348

0

예,이 문제에 대한 @eyelash 설명에 감사드립니다.

실제로 Clueweb-09의 일부 레코드 형식이 잘못되었습니다. 그러나 공식 warc 라이브러리와 위의 권장 git repo warc-clueweb library에는 몇 가지 문제가 있습니다.

이 포크 repo는 Clueweb12 데이터 세트를 처리 할 수 ​​없으며 모든 .warc.gz 파일을 처리 할 때 1-2 문서가 손실 될 수 있다는 또 다른 문제가 있습니다.

그래서 Clueweb09 및 Cluewe12 데이터 세트를 모두 지원하도록 약간의 코드를 변경했습니다. 여기에 1000 억 페이지를 테스트 한 내 레포가 있습니다. my warc tools은 warc-clueweb 라이브러리와 공식 레포에서 변경되었습니다.