仮想通貨の取引所データはwebsocketで配信
取引所などの価格データの更新はwebsocketを通じて配信されることが多くなってきています。
websocketでデータを受け取るのはhttpsヘッダーなどの余計なもののやり取り(オーバーヘッド)がないため大変軽くて便利です。
websocket通信をデベロッパーツールで手軽に確認
Chrome ⇒ 表示 ⇒ 開発/管理 ⇒ デベロッパーツール
でwebsocketの通信を見ることができます。
WSというところクリックするとWebSocketの通信のみを表示します。
Dataというところの緑の部分がサーバーにアップロードされたデータで黄色のところがダウンロードされたデータです。
Chromeのデベロッパーツールで見るとバイナリメッセージ(Binary Message)という形で配信されているものがあります。そこをクリックすると下の欄に数字が表示されます。
1f8bはgzip圧縮されたデータに特徴的な値
1f8bという値が見えると思いますが、それらはgzipデータに特徴的な値です。
送信するデータをより小さくするために、データがgzipで圧縮されています。
pythonでwebsocket-clientを使えば簡単にデータを取得できますが、この例のようにgzipで圧縮されたケースでは解凍しなければデータを読み取れません。
pythonのgzipモジュールにはdecompressという関数があってこれを使えばデータを解凍することができます。
rawdata = gzip.decompress(data)
data を解凍し、解凍データを含む bytes オブジェクトを返します。
これでprint(rawdata)
とすれば中身が表示されます。
コメント