Search 4 Truth

Search 4 Truth

Pythonと仮想通貨

【仮想通貨】いなごFlyerをスクレイピングする【Python】

今回は、いなごFlyerをPythonを使って(ほぼ)リアルタイムで数値の上下を観測できるようにスクレイピングしてみます。今回はJavascriptで動的にHTMLが生成されているサイトのスクレイピングなのでseleniumを使います。私はヘッダーレスブラウザのPhantomJSをwebkitとして使用しました。

こちらの記事を参考にしました。

cryptojapan.ml

環境

・MacBook Air Early 2015 Sierra 10.12.6
・Python 3.6.2 pip3
・iTerm2(コマンドプロント)
・CotEditor(エディター)

モジュールなど

・Selenium(pip3 install selenium)
・PhantomJS(http://phantomjs.org/
・time(標準モジュール)

コード

初めてのseleniumを使うスクレイピングなので簡潔にかきました。他の方の記事を見るとpathやら何やらを代入していたのですが特に何もしなくてもできたので記述しませんでした。

from selenium import webdriver
from time import sleep

#関数VOLでボリュームをスクレイプ
def VOL():
	for buyvol in driver.find_elements_by_id("buyVolumePerMeasurementTime"):
		ask = buyvol.text
	for sellvol in driver.find_elements_by_id("sellVolumePerMeasurementTime"):
		bid = sellvol.text
	return ask,bid

#seleniumの設定
#htmlを取得 ブラウザでこのウェブページに入る感覚(?)
#一回getしちゃえばjsを拾えてるみたいなのでwhileの外に
driver = webdriver.PhantomJS()
driver.get("https://inagoflyer.appspot.com/btcmac")

#無限ループさせてボリュームを更新させる
while True:
    print('-----------------')
	vol = VOL()
    print('buybol: ' + vol[0] + 'sellvol: ' + vol[1])

おまけ

素っ気なかったのでbFのapiを叩いて価格変動も一緒に観察できるようにしました。

from selenium import webdriver
from time import sleep
import requests

def BTC():
    URL = 'https://lightning.bitflyer.jp/v1/getticker'
    ticker = requests.get(URL).json()
    price = "{:,d}".format(int(ticker['best_ask'])),"{:,d}".format(int(ticker['best_bid']))
    return price

def VOL():
	for buyvol in driver.find_elements_by_id("buyVolumePerMeasurementTime"):
		ask = buyvol.text
	for sellvol in driver.find_elements_by_id("sellVolumePerMeasurementTime"):
		bid = sellvol.text
	return ask,bid

driver = webdriver.PhantomJS()
driver.get("https://inagoflyer.appspot.com/btcmac")

while True:
	btc = BTC()
	vol = VOL()
	print('-----------------------------')
	text = 'ask: ' + btc[0] + ' / vol: ' +vol[0] + '\n' + 'bid: ' + btc[1] + ' / vol: ' + vol[1]
	print(text)
	sleep(1)

実行

f:id:lisbeths:20180121215525g:plain

ボリュームと価格を同時にみることができるようになりました。製作中の自動取引botに組み込んでみたいと思います。