kakashi-blog・カカシブログ・

Python備忘録を書きドローンやバイクなど好きな事で生きて行こうとしているブログ

Excel python プログラミング 未分類

ナイスハッシュのmining payment毎に、レートを自動で取得(python)

投稿日:

マイニングを始めると、どのタイミングのレートで確定申告しようかと考えると思います。

ググると結構皆さん独自で考えて行っているのが現状ですかね。

ひと月にまとめている人、円に換えたタイミングの人・・・結構様々ですね。

本人の結局解釈次第だと思ってこの記事を書きます。

税制上わからんので自己責任で

 


独学プログラマー 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にやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

-Excel, python, プログラミング, 未分類
-, , , ,

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

Amazonはスクレイピングが禁止。seleniumでデータ収集をしてみた

pythonでコードを書いて、AmazonのサイトからASINコードと金額のデータを、普通にスクレイピングしてみたけど出来なかった。(バグだと思って何時間も無駄にした) どうやらAmazonのサイトは …

Python備忘録 selenium ブラウザスクロール編

ウェブブラウザをpythonで操作をしてみたい seleniumというライブラリでブラウザを操縦できる   退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング …

ソフトバンクからワイモバイルにiPhoneで乗り換える方法(MNP)

現在iPhone7を使用中、番号そのまま(MNP)ソフトバンクからワイモバイルに乗り換えたので自分なりにまとめます。   何から始めればいいのか 結構大事なことだけど、あまり書かれていないので書いてお …

amazonから注文していない物が届いた場合の対処法

  突然amazonから身に覚えのないものが届きました。 前日にAmazonアフィリの登録をしていたので、何か送ってきたのかと思い開けてみると。 👇望遠鏡が入っていました、まさにこれ。 …

PythonでFizzBuzz問題を書く

  FizzBuzz とは   元々は数人で遊ぶシンプルなゲーム。 1から順番にカウントアップして発言していき、3で割り切れる数のときは「Fizz」、5で割り切れる数の時は「Buzz]と発言していく。 …