2016-10-18 9 views
0

warcファイルを読んでいますが、this pageに基づいてフォローコードを書いていますが、何も印刷されていませんでした。私は、次のコマンドを書いたときPythonでwarcファイルを読む

>>import warc 
>>f = warc.open("01.warc.gz") 
>>for record in f: 
    print record['WARC-Target-URI'], record['Content-Length'] 

しかし、私は私のWARCファイルがClueweb09データセットからのファイルの一つである

>>print f 
<warc.warc.WARCFile instance at 0x0000000002C7DE88> 

注結果です。 this pageのために私はそれを言いました。

+0

それはあなたが解決策を持っているにリンクされている質問への受け入れ答えのように見えます。それを試しましたか? – cco

+0

@ccoコードの最初のボックスは印刷されません。 – user3487667

答えて

0

私はあなたと同じ問題がありました。

モジュールに関するいくつかの調査の後、私は解決策を見つけました。

record.payload.read()を使用してみてください、ここでは完全な例である。また、

import warc 
f = warc.open("01.warc.gz") 
for record in f: 
    print record.payload.read() 

、私はあなただけあまりにもwarcファイルが、wetを読み取ることができないと言うことができます。小さなカンニングが.warc

種類は、すべての

0

まずについてが含まれていること、名前に名前を変更している、WARC、またはWebアーカイブは、Webページのアーカイブ形式です。 warcファイルを読むには、特殊なヘッダーが含まれているため、少しトリッキーです。 warcファイルがthis formatであると仮定します。

次のコードを使用すると、メタデータとコンテンツを含むすべてのレコードの辞書を読み込み、解析して返すことができます。

def read_header(file_handler): 
    header = {} 
    line = next(file_handler) 
    while line != '\n': 
     key, value = line.split(': ', 1) 
     header[key] = value.rstrip() 
     line = next(file_handler) 
    return header 


def warc_records(path): 
    with open(path) as fh: 
     while True: 
      line = next(fh) 
      if line == 'WARC/1.0\n': 
       output = read_header(fh) 
       if 'WARC-Refers-To' not in output: 
        continue 
       output["Content"] = next(fh) 
       yield output 

あなたは次のように辞書にアクセスすることができます。

records = warc_records("<some path>') 
>>> next_record = next(records) 
>>> sorted(next_record.keys()) 
['Content', 'Content-Length', 'Content-Type', 'WARC-Block-Digest', 'WARC-Date', 'WARC-Record-ID', 'WARC-Refers-To', 'WARC-Target-URI', 'WARC-Type', 'WARC-Warcinfo-ID'] 
>>> next_record['WARC-Date'] 
'2013-06-20T00:32:15Z' 
>>> next_record['WARC-Target-URI'] 
'http://09231204.tumblr.com/post/44534196170/high-res-new-photos-of-the-cast-of-neilhimself' 
>>> next_record['Content'][:30] 
'Side Effects high res. New pho' 
関連する問題