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

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

pythonで画像処理 Pillow(PIL)

画像処理なんて大げさですが、Pillow(PIL)を使用して少し画像の操作をやりました   ライブラリのインポート~ from PIL import Image im=Image.open(‘C:\\ …

子供がズルをするので計算カードをpython(Tkinter)で作った

うちの小学1年生の子の宿題に「計算カード」があります。 学校からは、「時間を計ってやりなさい」と言われているようです。 もちろん計算なんかせず、めくる事が目的になって、 どれだけ早くめくれるか。みたい …

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

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

カワサキ ZX10R D型(06) プラグ交換

 インターネット上で、D型10Rの情報が少ないように感じるので、アップ出来るものはアップしていこうと思います。  新車で納車されたのは、既に14年も前の事なんですね。  細かなメンテナンスはやりながら …

Tkinterのメッセージボックス、謎ウインドウが消えない

pythonでTkinterを使用し、メッセージボックスを使おうと思ったが、謎ウインドウが出てきて処理が止まってしまう。    ↓のやつですね   調べてみると、「ルートウィンドウが無いと勝手に生成さ …