見出し画像

【PythonでWebスクレイピング入門】Pythonからビットフライヤーのビットコインデータを入手する

今回やりたい事として、PythonとRequestsを使ってビットフライヤーのビットコインに関するJSONデータを入手して、ビットコインの購入レートや売却レート、さらにはローカルに保存したJSONデータと比較し、前回との比較を算出してみたいと思います。

0.まずは環境の準備

今回利用する主なライブラリは下記の通りです。

import requests
import json

1. ビットフライヤーからJSONデータを入手する

ビットフライヤーのウェブサイトのトップページでは、購入レートや売却レートが表示されているものの、requestsを経由して得られるページ構造では下記のコードが返ってきており、実際のレートはスクリプトを利用して代入されていると推測できます。

<div class="bf-bcprice__buy">
<h3>ビットコイン購入(円)</h3>
<span class="js-lastask"></span>
</div>

そのため、今回はビットフライヤーの提供するJSONデータにアクセスして、必要なレート情報を入手してみたいと思います。

JSONデータが入手できるurlは次の通りです。

url = 'https://bitflyer.com/api/market'

次に指定されたurlより、JSONデータを返す関数モジュールがこちらです。

def get_json_data(url):

    res = requests.get(url)

    return(res.json())

先ほどのurlを、上の関数モジュールで呼び出すと、下記の様な結果が得られます。

btc_price_current = get_json_data(url)
print(btc_price_current)

結果

{"ask":778781.000000000000,"ask_str":"778,781","bid":755708.000000000000,"bid_str":"755,708","mid":767244.500000000000,"mid_str":"767,245","high":782544.500000000000,"high_str":"782,545","low":762379.000000000000,"low_str":"762,379"}

得られたJSONデータですが、下記の様な形でデータの取得を行う事ができます。因みにレートに関しては、2種類が準備されており、例えば購入レートの場合、数値としてのデータは['bid']、また文字列としてのデータは['bid_str']として格納されています。

print('ビットコイン購入: '+btc_price_current['bid_str']+'円')
print('ビットコイン中間: '+btc_price_current['mid_str']+'円')
print('ビットコイン売却: '+btc_price_current['ask_str']+'円')

2. ビットフライヤーから入手したJSONデータをファイルとして保存する

せっかくなので、入手したビットフライヤーのJSONデータをファイルとして保存してみます。

with open('btc_price.json', 'w') as f:
    json.dump(btc_price_current, f)

このラインで、ファイル名「btc_price.json」を書き込み形式でオープンし、取得したJSONデータをダンプして書き込みます。

3. ビットフライヤーから入手したJSONデータを、前回保存したJSONファイルと比較する【有料】

上記で保存したJSONファイルですが、今回スクリプトを走らせる毎に、

* ローカルに保存されたビットフライヤーのビットコインレートを読み込
* ビットフライヤーよりビットコインの最新レートを入手する
* ローカルのビットコインレートと比較し、レート差を算出する

を表示する様にしてみたいと思います。

こちらがコピペで使える今回のPythonスクリプトになります。

ここから先は

965字

¥ 300

この記事が気に入ったらサポートをしてみませんか?