人気ブログランキング | 話題のタグを見る

「TH69の亜米利株」Ver.12.1dがベクターで公開されました!

TH69です。

TH69の亜米利株」Ver.12.1dがベクターで公開されました!

「TH69の亜米利株」Ver.12.1dがベクターで公開されました!_e0382354_15203624.gif

公開まで結構早くて驚きました!


TH69の亜米利株のダウンロードは→ こちら(ベクター)

では、ご利用よろしくお願いします!






# by th1252 | 2023-05-31 15:27 | TH69の亜米利株の情報 | Trackback | Comments(0)

「TH69の亜米利株」Ver.12.1dをベクターに公開申請しました!

TH69です。

「TH69の亜米利株」Ver.12.1dをベクターに公開申請しました!

「TH69の亜米利株」Ver.12.1dをベクターに公開申請しました!_e0382354_17001122.gif


Ver.12.0でPython実行ファイルによる株価・配当利回りなどの更新機能を実装しました。

「TH69の亜米利株」Ver.12.1dをベクターに公開申請しました!_e0382354_17001233.gif



使い方については同梱の「Python実行ファイルの使用方法.txt」をご覧ください。なお、旧バージョン(Ver.11.0d以前)の「TH69の亜米利株」ExcelファイルでPythonは動作いたしませんので、必ず新バージョンのファイルにデータ移行後にご利用願います。


「TH69の亜米利株Ver.12.0」のバージョンアップに伴い、グラフファイル(グラフ.xlsm)もVer.1.8にバージョンアップを行いました。私の新PC(Windows11,15インチノート)の解像度(1920×1080)に合わせたシートの見え方の調整です。ご利用後に以前の見え方の方がよかったというユーザー様が居られましたら、バージョンアップ前の「グラフ.xlsm」を新バージョンのファイルに差し替え(もしくは上書き)してのご利用をお願いいたします。

では、いい投資を!




# by th1252 | 2023-05-28 17:03 | TH69の亜米利株の情報 | Trackback | Comments(0)

PythonでWEBスクレイピングをやってみました!

TH69です。

Pythonによる株価取得ファイルですが、エラーでたまに止まってしまうことがあるので調べてみました。

するとエラーは株価や配当利回り取得時に発生しているのではなく、一番最初に行っているドル円レートの為替相場取得時であることが分かりました。ドル円レートはPythonのライブラリの一つである「pandas-datareader」で取得していましたが、それを従来のVBAによるWEBスクレイピングと同じサイトでやってみることにしました。

色々調べてみたところ、PythonでのWEBスクレイピングはメッチャ簡単であることが分かりました。思い通りに取得できないサイトもありますが、私が利用しているYahooFinance(日本)では簡単にドル円レートを取得することができました。


ちなみに今回作成したのは下のスクリプトです。

import requests
from bs4 import BeautifulSoup
url = "https://finance.yahoo.co.jp/quote/USDJPY=X"
res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")
elems = soup.select('._1c9rs8VH > span:nth-child(1)')
price = elems[0].contents[0]
print(price)

「BeautifulSoup4」というライブラリのインストールは必須です。

「url」にWEBスクレイピングしたいサイトのURLを指定します。
「elems = soup.select」の右のカッコに取得したい箇所の「CSSセレクター」の値を入力します。

これだけで「Price」にその値(今回はドル円レート)が返ってきます。って、めちゃくちゃ簡単やん!


その「CSSセレクター」の値の取得方法を説明します。

1)WEBスクレイピングしたいサイトをブラウザで開きます(私の場合はFirefoxです)
PythonでWEBスクレイピングをやってみました!_e0382354_15524326.gif

2)取得したい箇所のテキストをマウスで選択(今回は「134.7700」)し、右クリックメニューから「調査」をクリックします。
PythonでWEBスクレイピングをやってみました!_e0382354_15524779.gif

3)すると何か解析の画面が出るので、ハイライトされた箇所の右クリックメニューから「コピー>CSSセレクター」をクリックします。
PythonでWEBスクレイピングをやってみました!_e0382354_15525189.gif

4)これで「CSSセレクター」が取得できるはずです。
(今回は「._1c9rs8VH > span:nth-child(1)」が取得できました)


5)ほかのブラウザでもほぼ同じやり方で取得できます。「Microsoft Edge」では「開発者ツールで調査する」をクリックします。
PythonでWEBスクレイピングをやってみました!_e0382354_15525531.gif

6)同様に開いた解析ページのハイライトされた部分の右クリックメニューから「コピー>selectorをコピー」をクリックします。
PythonでWEBスクレイピングをやってみました!_e0382354_16062168.gif
7)これで「selector」が取得できるはずです。
(今回は「#contents > div > div._1ziqiIUl > div:nth-child(5) > div:nth-child(1) > div._1-HjOuwn > div._103wsUl4 > div._2AQd5-ZG > p._1c9rs8VH > span」が取得できました)


8)使用するブラウザによって取得できる値は違うこともあるようですが、どちらでも問題なく「134.7700」が取得できました。


今回の改良でさらに公開時期が近付いたかも…。従来と為替レートも同じになったので、ほぼ差異がなくなりました。

では、よい投資を!




# by th1252 | 2023-05-06 16:19 | Python | Trackback | Comments(0)

「TH69の亜米利株」Python実行(exe)ファイルの使い方

TH69です。

プログラミング言語のPythonによる株価更新ファイルがかなり出来上がってきて、ほぼ思い通りの動作が実現できているため、そろそろ公開したいと考えています。

それで、まだちょっと気が早いんですけどYoutubeに【「TH69の亜米利株」Python実行(exe)ファイルの使い方】をアップしましたので紹介します。

最後は色々いらんことしゃべってますが、ご容赦願います。




「Python実行ファイルの使用方法」について

「TH69の亜米利株」Ver.12.0でPython実行ファイルによる株価などの更新を実装しました。

現状エクセルVBAのWebスクレイピングで株価・配当利回り・ドル円レートなどを取得しているため、いつそれらが行えなくなったとしても不思議ではありません。そういう非常時の備えとしての役割としてだけでなく、通常時の作業効率化と時間短縮のアイテムとしても利用価値はあると思います。

ただ、Pythonによるプログラミングについては超初心者なので、コーディングミスによる動作不良など多々あるものと思います。その時は優しく連絡して下さるようお願いいたします。

基本的な使い方としては、
(A)直接「Python株価更新.exe」ファイルを起動する方法
(B)各シートにある「Py」ボタンをクリックする
の2種類となります。

まず(A)「Python株価更新.exe」ファイルを起動する方法について説明します。

(1) 「Python株価更新.exe」ファイルは必ず「TH69の亜米利株.xlsm」ファイルと同じディレクトリでご利用願います。そうすることで「TH69の亜米利株.xlsm」ファイルの選択が楽になります。

(2) 「Python株価更新.exe」ファイルをダブルクリックして起動します。この時、何かアプリのようなものが開いたりすることはありません。

(3) しばらくすると開きたい「TH69の亜米利株.xlsm」ファイルが選択できるファイルダイアログが開きますので、そこに表示されたファイルを選択し「OK」ボタンを押します。
  (推奨はしませんが、ファイルダイアログで別の場所にあるファイルの選択も可能です)

(4) 「OK」ボタンを押すと自動でExcelが起動し選択した「TH69の亜米利株.xlsm」ファイルが開き、全てのシートの株価・配当利回りなどを更新します。

(5) 更新作業が終了すると「終了しました」というダイアログが表示されますので、「OK」ボタンを押してダイアログを閉じます。
  (課題なのですが、このダイアログがアクティブにならないため「enter」で閉じられません)

(6) 各シートを確認して更新が問題なく行われていれば保存して終了します。
  (問題がある場合や更新が途中で止まってしまう場合はご連絡お願いいたします。)


次に(B)各シートにある「Py」ボタンをクリックする方法について説明します。

(1) 「TH69の亜米利株.xlsm」ファイルを開きます。

(2) 更新したいシートを開き、シート上部にある「Py」ボタンを押します。

(3) 自動で「Python株価更新.exe」ファイルが開き株価更新などを行います。

(4) 更新作業が終了すると「終了しました」というダイアログが表示されますので、「OK」ボタンを押してダイアログを閉じます。

(5) 必要ならば他のシートも同様に更新します。


※なお、「ティッカー一覧」シートにある「Pythonで全更新」ボタンをクリックした場合は、株価更新を行える全てのシートの更新を行います。


では、よい投資を!




# by th1252 | 2023-05-01 15:25 | TH69の亜米利株の情報 | Trackback | Comments(0)

Python 自身のパスを「__file__」で取得するとexe化後は別の場所となる不具合の対処

TH69です。

Pythonで、そのスクリプトが実行されている場所(自身のパス)を取得したい時があります。私は「TH69の亜米利株」でexe化したPythonファイルを実行したときに自身のパスを取得し、ファイルダイアログでその場所にあるExcelファイルを選択できるようにしました。

その時に自身のパスを「__file__」で取得するコードだと、VSCode上でスクリプトとして実行している時はいいのですが、いざexe化して実行してみると全く別の場所のファイルダイアログが表示されて使い物になりませんでした。

その状況を再現するために下のスクリプトを作って試してみました。

test_Path.py
import os
import xlwings as xw
myDir = os.path.dirname(__file__)
print(myDir)
wb = xw.Book()
ws = wb.sheets.active
ws.range('A1').value = myDir

これを同じ場所に置いて(C:\Users\th696\Documents\Python)実行してみました。
Python 自身のパスを「__file__」で取得するとexe化後は別の場所となる不具合の対処_e0382354_19565165.gif

「test_Path.py]をVSCodeで実行
Python 自身のパスを「__file__」で取得するとexe化後は別の場所となる不具合の対処_e0382354_19364162.gif

「test_Path.exe」ファイルを実行
Python 自身のパスを「__file__」で取得するとexe化後は別の場所となる不具合の対処_e0382354_19374913.gif

「test_Path.py]をVSCodeで実行した場合は「c:\Users\th696\Documents\Python」と正しいパスが取得できていますが、「test_Path.exe」ファイルを実行した場合は「C:\Users\th696\AppData\Local\Temp\_MEI185642」と全く別の場所が取得されました。

取得したのはTempフォルダなので、多分ですがexeファイルは圧縮されているのでTempフォルダで一旦解凍してから実行しているため、その解凍された場所のパスが取得されたものと思われます。


それで色々検索して見つけたのが下のコードです。
このコードを使用するとexe化したスクリプトも自身のパスを取得することができるようになります。

if getattr(sys, 'frozen', False):
myDir = os.path.dirname(sys.executable)
else:
myDir = os.path.dirname(__file__)

このコードを使用して上記「test_Path.py」を改良して「test_Path2.py」を作ってみました。

test_Path2.py
import os
import sys
import xlwings as xw
if getattr(sys, 'frozen', False):
myDir = os.path.dirname(sys.executable)
else:
myDir = os.path.dirname(__file__)
print(myDir)
wb = xw.Book()
ws = wb.sheets.active
ws.range('A1').value = myDir

これを同じ場所に置いて(C:\Users\th696\Documents\Python)実行してみました。
Python 自身のパスを「__file__」で取得するとexe化後は別の場所となる不具合の対処_e0382354_20204574.gif

「test_Path2.py]をVSCodeで実行
Python 自身のパスを「__file__」で取得するとexe化後は別の場所となる不具合の対処_e0382354_20233875.gif

「test_Path2.exe」ファイルを実行
Python 自身のパスを「__file__」で取得するとexe化後は別の場所となる不具合の対処_e0382354_20234360.gif

見事にどちらも同じパスを取得することができました! めでたしめでたし(嬉)


【教訓】
Pythonをexe化したファイルで自身のパスを取得する場合は必ず下記のコードを使用すること。
if getattr(sys, 'frozen', False):
myDir = os.path.dirname(sys.executable)
else:
myDir = os.path.dirname(__file__)


では、よいプログラミングを!




# by th1252 | 2023-04-28 20:37 | Python | Trackback | Comments(0)