2016-10-18 10 views
2

免責使用しているWebページスクレイピング:私はちょうど私が何の悪意がfirebaseデータベース

を持っていない、実行して勉強し、私はこのウェブサイトに記載されているアプリケーションのリストを取得したいと思います: http://roaringapps.com/apps

私は過去にも同様のことをやったことがありますが、より単純なウェブサイトでは、今回は、このWebページの背後にあるデータを手に入れることに問題があります。

ページ間のスクロールが速いので、ウェブページの仕組みを理解するために、パケットスニッファを起動してトラフィックを分析しました。ブラウザで2500レコードをスクロールしても、最初の読み込み後にサーバーとクライアントの間でトラフィックが交換されないことに気付きました。そんなことがあるものか?

とにかく。私の理解は、ウェブサイトが何らかの種類のストリームからデータをロードし、Javascript経由でレンダリングしていることです。私は正しいですか?

私はchromium devtoolsを起動して "ネットワーク"タブを見て、次のアドレスにWebSocketリクエストが行われていることを確認しました:wss://s-usc1c-nss-123.firebaseio.comこの時点で

chromium devtool

、ビットをグーグル後、私はデベロッパーツールのウィンドウで見た「V = 5つの& NS =のroaringapps」クエリを使用して、非常に同じサーバーを照会しようとしました:

from websocket import create_connection 
ws = create_connection('wss://s-usc1c-nss-123.firebaseio.com') 
ws.send('v=5&ns=roaringapps') 
print json.loads(ws.recv()) 

この返信を受けました:

{u't': u'c', u'd': {u't': u'h', u'd': {u'h': u's-usc1c-nss-123.firebaseio.com', u's': u'JUL5t1nC2SXfGaIjwecB6G13j1OsmMVv', u'ts': 1476799051047L, u'v': u'5'}}} 

&というアプリケーションに関する生データを使ってjson応答が表示されることが予想されました。私は間違っているの?

ありがとうございます!

UPDATE

は実は、私はちょうどウェブサイトは、そのデータをロードするためにJSONを使用してであることが分かりました。私はおそらくキャッシュのために反復要求でそれを見ていませんでした - しかし、クロムでそれを無効にすることがトリックでした。

答えて

2

Firebaseデータベースでは、JSONデータを読み書きできますが、しかし、SDKは単純に生のJSONデータを転送するだけではなく、効率的でスムーズなエクスペリエンスを確保するために多くのトリックを行います。 W

Firebaseのワイヤプロトコルがあります。プロトコルは公に文書化されておらず、解読しようとすると、あなたに不愉快な時間を与えることになります。

場所で実際のJSONを取得するには、Firebase's REST APIを使用するのが最も簡単です。 URLに.jsonを単に追加してHTTP GETリクエストを送信することで、それを得ることができます。初期からデータがロードされている場合

だから:

https://mynamespace.firebaseio.com/path/to/data 

あなたはHTTP GETに対する焼成することにより、生のJSONを取得したい:

https://mynamespace.firebaseio.com/path/to/data.json 
+0

おかげでフランクを、今私は少なくとも持っています私が混乱していたものの手がかり:) 私はドキュメントを見て、それは私には全く新しいものです。 – Delta

関連する問題