マイニングを始めると、どのタイミングのレートで確定申告しようかと考えると思います。
ググると結構皆さん独自で考えて行っているのが現状ですかね。
ひと月にまとめている人、円に換えたタイミングの人・・・結構様々ですね。
本人の結局解釈次第だと思ってこの記事を書きます。
税制上わからんので自己責任で
独学プログラマー Python言語の基本から仕事のやり方まで
やったこと
コインチェックのサイト内に、過去のレートを分刻みで取得できるサービスがある。
それを利用し、ナイスハッシュの支払い履歴から一つずつレートを確認する。
そんなめんどくさい事は出来ないので、pythonを使用し自動化
ソースデータの準備
CSVの取得⇒エクセルに変換
ナイスハッシュの[HISTORY & STATS]⇒[ Last mining payments ]の
右の方にあるEXPORTからCSVデータを出力し、エクセルに変換
(エクセルの方が後で色々使えるので)
使用モジュール
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup as bs
import pyautogui as pg
import time
import openpyxl
セレニウムだけだとうまくいかなかったので、
直接キーボード操作ができる[ pyautogui ]も使用
セオリー無視、プロでは無いので目的が達成されればOK(動けばOK)
エクセルデータの取り込み
CSVからエクセルに変換したデータの2行目のA列とB列から下の行をすべて
入力出来る形にして変数に入れていきます。2021、0828、0505、こんな感じ
xname=input()
def excell(xname):
wb=openpyxl.load_workbook(xname,data_only=True)
ws = wb.worksheets[0]
row=2
g=[]
x=[]
while ws.cell(row, 1).value != None:
ymd,ms=ws.cell(row,1).value,ws.cell(row,2).value
for dtz in (ymd[:4],ymd[5:7]+ymd[8:10],ms[:2]+ms[3:5]):
g.append(dtz)
x.append(g)
g=[]
row+=1
return x
ブラウザ操作でレートを取得
①まずコインチェックの 過去のレート が取得できるサイトを
ウェブドライバーで開き最大化(最大化はどうでもいいけど)
5秒待つ(立ち上がらないまま次の作業に移るとエラーになる)
②セレクトボックスをクリックし、BTC/JPYを選択
1個目なのでそのままその場所をアクティブにし、[TAB]を押す
③エクセルから取得した[年月日時分]を pyautogui を使って
打ち込み、BeautifulSoupでHTMLを取得
レートを吸い出し変数へ入れる※これをfor分で全行繰り返す
④終わったらブラウザを閉じる
browser = webdriver.Chrome()
browser.get('https://coincheck.com/ja/exchange/rates')
browser.maximize_window()
time.sleep(5)
def rate(xname):
c=[]
dt=excell(xname)
for i in dt:
bt=browser.find_element_by_class_name('select-box')
bt.click()
element = browser.switch_to.active_element
element.send_keys(Keys.TAB)
for ii in i:
element.send_keys(Keys.TAB)
pg.typewrite(ii, 0.1)
element = browser.switch_to.active_element
element.send_keys(Keys.TAB)
element = browser.switch_to.active_element
element.send_keys(Keys.ENTER)
time.sleep(3)
html=browser.page_source
soup = bs(html,'html.parser')
a=soup.find_all("span",class_="num ng-binding")
b=a[2].text.replace(',', '')
c.append(b)
browser.refresh()
return c
browser.quit()
取得したレートをエクセルに書き込む
あとは簡単、取り出したレートをエクセルデータに突っ込んでSAVE
def exin(xname,bitcoin):
row=2
wb=openpyxl.load_workbook(xname)
ws=wb.worksheets[0]
for i in range(len(bitcoin)):
ws.cell(row, 7).value=int(bitcoin[i])
row+=1
wb.save(xname)
結果
G列にその時のレートがちゃんと入っています。
目的達成したのでOK!
以上です。
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング