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

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

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

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

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

が必要になる

しかし

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

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

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

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

1
pip install beautifulsoup4 lxml html5lib

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

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

を参考に

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

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

なので

1
2
3
4
5
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 で表示できれば次にループ表示すれば週間カレンダーが表示できる
ので

1
mkdir fx_tool


作業ディレクトリを作成

使用するエディタは VS Code

1
2
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 のインポートができなかったけど
これで解決

1
2
3
from bs4 import BeautifulSoup
import pandas as pd
import streamlit as st

でライブラリインポート

アプリのタイトルは

1
st.title()

で追加

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

1
st.sidebar.write()

で記述していく

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
で設定も考えたが、使いにくいものになりそうなので別のレイアウトにすることに

コメントを残す

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