経済指標カレンダーの取得

経済指標カレンダーの取得

FXで重要な経済指標をWebスクレイピングで取得する方法

を参考にみんかぶからスクレイピング

でーたを綺麗にするために
列名を主導で追加
必要の無い列、行を削除

が必要になる

しかし

import pandas as pd

url = 'https://fx.minkabu.jp/indicators' #みんかぶFXの経済指標URLを取得
dfs = pd.read_html(url) #テーブルのオブジェクトを生成

を実行してもリストになってしまう

Pandasで超簡単!WEBスクレイピング(表・htmlのtable取得)

を参考に
read?html に
必要なライブラリ不足かと思い

pip install beautifulsoup4 lxml html5lib

でインストールしてみたが変わらない

BeautifulSoupでテーブルスクレイピング

を参考に

import pandas as pd
url2 = 'https://en.wikipedia.org/wiki/Transistor_count'# 対象のwebページのurl
dfs = pd.read_html(url2)# webページに複数のテーブルがある場合、リスト形式でdfsに格納されます

とすると
webページに複数のテーブルがあるとリストになってしまう

なので

import pandas as pd

url = 'https://fx.minkabu.jp/indicators' #みんかぶFXの経済指標URLを取得
dfs = pd.read_html(url) #テーブルのオブジェクトを生成
dfs[0]

とすればテーブルとして表示できる

よくみたら出力するときに
dfs[0]
で指定していた….

とりあえずこれで当日の経済指標カレンダーは取得できそう

0からカウントされるので
0〜4までで1週間のカレンダー取得ができる

なお変動の pips については
米ドル/円やクロス円(ユーロ/円、ポンド/円など)の場合
1pip=0.01円(1銭)
10 pips=0.1円(10銭)
100 pips=1円(100銭)

米ドルストレート(ユーロ/ドル、ポンド/ドルなど)の場合
1pip=0.0001ドル(0.01セント)
10pip=0.001ドル(0.1セント)
100pip=0.01ドル(1セント)
となっている

これで
streamlit で表示できれば次にループ表示すれば週間カレンダーが表示できる
ので

mkdir fx_tool


作業ディレクトリを作成

使用するエディタは VS Code

cd fx_tool/
code ./

で作業ディレクトリに移動
vscode が起動する

main.py
を作成

久しぶりなのでほぼ忘れているので
Visual Studio Code キーボード ショートカット

をみながら操作

しかし途中でライブラリインストール済みでも import でエラー

このため
vscide import
で検索
VSCode で Python の import や from のエラーが消えない

を参考に

F1 を押す
Python: Select Interpreter を入力

使用する python を conda のものに設定

デフォルトの
Use default Python interpreter path
だとなぜか pandas のインポートができなかったけど
これで解決

from bs4 import BeautifulSoup
import pandas as pd
import streamlit as st

でライブラリインポート

アプリのタイトルは

st.title() 

で追加

経済指標カレンダーは
サイドバーで表示したいので

st.sidebar.write()

で記述していく

st.title('FX tool')

st.sidebar.write("""
# 経済指標カレンダー
今週の経済指標カレンダー
""")

url = 'https://fx.minkabu.jp/indicators' #みんかぶFXの経済指標URLを取得
dfs = pd.read_html(url) #テーブルのオブジェクトを生成
dfs[0]

dfs1 = dfs[0].dropna(subset = [4]) #4番にNaNが入っている行はバグなので、削除
dfs2 = dfs1.drop(2,axis =1) #2番目の列を削除。axis = 1は列を削除するオプション
dfs2.columns = ["発表時間", "経済指標", "前回変動幅(USD/JPY)","前回","予想","結果"]#列名を手動で追加。

#前処理終了

dfs2

st.sidebar.table(dfs2)
としてみたが
サイドバー表示だと見えにくいので本体の方にテーブル表示にする

なおサイドバーのwidth を変更する方法として
Change width of sidebar

にあるように
st.markdown
で設定も考えたが、使いにくいものになりそうなので別のレイアウトにすることに