スクレイピング: 仮想通貨の時価総額推移について


これまでに仮想通貨が市場に供給されると
自分が保有している仮想通貨やトークンがどれほどまでに
時価総額が推移しているかが気になる。

そこでCryptoCurrency MarketCapitalizationsのサービスを使って
時価総額の推移をスクレイピングで抽出してみる。

時価総額の推移は下記ページから情報が取得できる。
たとえばビットコインの時価総額だと現時点で722億ドルということがわかる。

時価総額を取得すること自体はこのサイト自体のAPIで取得できるが、
推移を取得するためのAPIが見つからなかったので、スクレイプで情報を取得する

上記ページのソースは単純なテーブル構造のため
bitcoinの時価総額をCSVで抽出するだけであれば、少ないコードで済み、シンプルといえる。
(2017/8/25現在)

MarketPrice.py

from bs4 import BeautifulSoup
import requests as rs
import csv

url='https://coinmarketcap.com/currencies/bitcoin/historical-data/?start=20130428&end=20170827'

res=rs.get(url)

soup=BeautifulSoup(res.text,"html.parser")

prices=soup.select("div#historical-data  tr.text-right")
f = open('market_price.csv', 'w')
writer = csv.writer(f, lineterminator='\n')
for item in prices:
    date=item.select("td")[0].string
    volume=item.select("td")[5].string
    marketcap=item.select("td")[6].string

    csvlist = []
    csvlist.append(date)
    csvlist.append(volume)
    csvlist.append(marketcap)

    print(date,volume,marketcap)
    writer.writerow(csvlist)
f.close()

補足:

時価総額が記載されているテーブル列は非常にシンプルな
構造のため、下記のCSSクエリで済む。

cssクエリ
prices=soup.select("div#historical-data  tr.text-right")

上記のスクリプトと同じ要領で、bitcash(bth), ripple, Ltecoin, Ethereum(eth), Rippleも出力した結果が下記のとおり。

この結果で面白いのが2017年6月末時点で、Ethereumの時価総額がBitcoinの時価総額に到達する直前だった。
そこから7月に入るとEthereumのFlashCrashといったスケーリング問題が浮き彫りになり、Bitcoinの分裂問題で時価総額が、仮想通貨全体で下落した。

そして8月に入り一時的にBitcoinの分裂問題も解決?したのか仮想通貨全体が再び上昇基調にある。(8月にはいるとBitcashがあらたに市場に流通することとなり、市場への供給当初からrippleの時価総額を抜いている。)

以上で時価総額の推移を抽出できたが、情報提供元であるサイト自体、トークンの市場取引価格を提供するAPIを公開している。そのためサービス自体がとても魅力的ともいえる。

次回は自分の保有するトークン残高を日本円で取得するようにしてみようと思う。