Investing.comのドル円の情報を、スプレッドシートに貼りつけるプログラム

●概要

いつもお世話になっている先生から、
「Investing.comからドル円の状況を自動で引用して、スプレッドシートに貼り付けられる?」
というご要望を頂きましたので、作成しました。

●事前準備

1:Jupyter Labを使える様にする

Anacondaなどをダウンロードしておき、
Jupyter Labを使えるように置いて下さい。

https://anaconda.org/conda-forge/jupyterlab

2:スプレッドシートを使えるようしておく

Gmailアカウントを用意しておき、スプレッドシートにしてログインが出来れば大丈夫です。

3:スプレッドシートのAPIを有効化しておく

プログラムからスプレッドシートにデータを書き込む為の対応を行います

https://www.youtube.com/watch?v=fFSGPciIkfI
上記のキノコード様のこの動画を参考にされるのが、一番良いと思います。
※秘密鍵の発行まで対応されれば問題ありません

4:Chrome DriverをDLしておく

Investing.comから情報を取得する為、
ご自身のGoogle Chromeと近いChrome DriverをDLしたおきます

Chrome DriverのDLページ
https://chromedriver.chromium.org/downloads

またGoogle Chromeのバージョン確認は下記のプログを参照して下さいhttps://support.biglobe.ne.jp/settei/browser/chrome/chrome-013.html

●プログラムコード


・初期設定

こちらはコードは一回だけ行えば大丈夫です

!pip install openpyxl
!pip install selenium
!pip install beautifulsoup4
!pip install pandas
!pip install google-auth google-auth-oauthlib google-auth-httplib2
!pip install gspread
!pip install gspread_dataframe
!pip install os

・実際に使うコード


chromedriver_path = "chromedriver.exeが格納されてるフォルダを指定する"
chromedriver = os.listdir(chromedriver_path)
chromedriver_files =chromedriver_path+chromedriver[0]

driver = webdriver.Chrome(chromedriver_files)

url="https://jp.investing.com/currencies/usd-jpy-historical-data"
driver.get(url)
# Wait for some time for the page to fully load
time.sleep(5)

# Parse the page source with BeautifulSoup
soup = BeautifulSoup(driver.page_source, 'html.parser')

# Find the table
table = soup.find('table', {'class': 'datatable_table__D_jso datatable_table--border__B_zW0 datatable_table--mobile-basic__W2ilt datatable_table--freeze-column__7YoIE'})

table_rows = table.find_all('tr')

res = []
for tr in table_rows:
    td = tr.find_all('td')
    row = [tr.text.strip() for tr in td if tr.text.strip()]
    if row:
        res.append(row)

df = pd.DataFrame(res, columns=["日付け", "終値", "始値", "高値", "安値", "出来高", "変化率"])


# 先ず、dfheadをCSVとして一時保存します
df.to_csv('temp.csv', index=False, header=False, encoding="cp932")

pdo1=  pd.read_csv('temp.csv',encoding="cp932")

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive.file']



creds = Credentials.from_service_account_file('フォルダに格納した秘密鍵のjsonファイル', scopes=SCOPES)

# Use the gspread library to authorize and interact with the sheets.
gc = gspread.authorize(creds)


# スプレッドシートを開く
spreadsheet = gc.opeby_url('スプレッドシートのurl')

# シート1を選択
worksheet = spreadsheet.worksheet('書き込むシートの名称')

# A列で最後のセルを見つけます
values_list = worksheet.col_values(1)
last_row_number = len(values_list)

# 最後のセルの次のセルからデータフレームの内容を書き込みます
set_with_dataframe(worksheet, pdo1, row = last_row_number+1, include_index=False)

●注意点


1:初期設定の各種のパッケージは必ず行なって下さい

少し時間は掛かりますが、一度行えば今後このステップは飛ばしてもう問題ありません

2:各ファイルなどの環境はご自身の物で合わせてください

指定箇所は以下の物になります
・chromedriver_path = "chromedriver.exeが格納されてるフォルダを指定する"
┗使用するchromedriver.exeがある、フォルダを指定します
┗コードではフォルダ内の一番上のファイルを指定しているので、フォルダ内にはchromedriver.exe以外は格納しないことをお勧めします
┗chromedriver.exeは定期的に更新が入るので、下記のようにファイルを入れ替えるだけにしておくと楽です
chromedriver_path = "C:/Users/pcアカウント名/Desktop/プログラム/元ファイル/chromedriver/"

・spreadsheet = gc.opeby_url('スプレッドシートのurl')
┗ここで書き込むスプレッドシートのurlを指定します

・worksheet = spreadsheet.worksheet('書き込むシートの名称')
┗ここでスプレッドシートで書き込むシートを指定します

●改良点
恐らくドル円以外にも抽出する必要があるので、そこは考えておく必要がある
↓↓↓
ExcelにDLしたいページと書き込み用のスプレッドシート名を記載しておき、それを呼び出す感じの物になるのかな、とは思っております

この記事が気に入ったらサポートをしてみませんか?