2017-04-27 2 views
0

私はPythonラッパーを使ってOnionscan Scraperを構築するときにtutorialの後に最近Onionscanを試しました。チュートリアルが書かれて以来、OnionscanはJSONファイルのすべてのデータの保存から、Tiedotを使用して構築されたデータベースへの保存まで移行しました。Pythonを使用してOnionscanから生の(バイナリ?)Tiedot(NOSQL/JSON)データを読む

私は拡張子を持たないファイルのうち、単にdat_0という名前をつけてPythonを使って解析する方法を見つけようとしています。私は、次を得るMacOSのテキストエディットでdat_0を見ると

... dat_0 as displayed by Textedit

崇高なテキストが dat_0 as displayed in Sublime text

...として、それを表示する一方で、私は、このファイルを解析する方法をうまくしようとしていますPythonを使って私はTiedotのドキュメントとTexteditを介してJSON構造体を使用していると見ていますが、私はあまり運がありませんでした。

import json 
f = open('crawls/dat_0','rb') 
data = json.dumps(f.read()) 

IOPub data rate exceeded. 
The notebook server will temporarily stop sending output 
to the client in order to avoid crashing it. 
To change this limit, set the config variable 
`--NotebookApp.iopub_data_rate_limit`. 

または

data = json.loads(f.read()) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-5-21c335a72c11> in <module>() 
----> 1 data = json.loads(f) 

/Users/James/anaconda/lib/python3.5/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 
    310  if not isinstance(s, str): 
    311   raise TypeError('the JSON object must be str, not {!r}'.format(
--> 312        s.__class__.__name__)) 
    313  if s.startswith(u'\ufeff'): 
    314   raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)", 

TypeError: the JSON object must be str, not 'bytes' 

... a)は、このファイルが何であるか、誰を知っていますか? b)データをPythonで使用できるようにするために、どのように解析したらよいか知っていますか?

+0

なぜ、あなたの質問に行くタグがある...言語の多数のためのパーサーを作成することができますか?あなたはPythonでヘルプのヘルプを要求している、OnionScanはGoで書かれているという事実はあなたの問題に関連していません。 –

+0

@WilliamPoussier私が解析しようとしているデータが、Tiedotを使用して作成されたGoコミュニティの標準的なフォーマットであるかどうかは完全にはわかりませんでした。もしそれがあれば、Goに精通している人はかなり早く認識されるだろうと思っていましたが、必ずしもPythonに精通している人ではありません。 –

答えて

1

今後これを見つけた方は、自分で解決策を見つけました。私はKaitai Structを使ってTiedotファイル構造のバイナリパーサを作成しました。それは非常に便利なツール

私はパーサがある生成するために使用される解体構造ですので、解体は

meta: 
    id: parser 
seq: 
    - id: records 
    type: record 
    repeat: eos 
types: 
    record: 
    seq: 
    - id: validity 
     type: s1 
    - id: allocated 
     type: s8le 
    - id: document 
     type: str 
     encoding: utf-8 
     terminator: 1 
     eos-error: false 
関連する問題