さくら VPS Python Selenium Web 自動操作
ダウンロ-ドファイル名変更
ここまでで、求めるファイルをダウンロ-ドできました。
引き続き、ダウンロ-ドしたファイル名を変更していきます。
ダウンロ-ドしたファイル名を mane_chart_go.csv に変更します。
sc_sele_mane.py の最後の部分に以下の内容を追加します。
path = "/home/yamada/public_html/manep/"
files = os.listdir(path)
でパスの文字列のリストを取得します。
ここには適当に最初のみ mane_chart_go.csv をおいておきます。
すると、最初は mane_chart_go.csv が存在しますので、
files[0] には CSV ファイル名 'mane_chart_go.csv'
が入ります。
files[1] には取得した
PFX_CHART_20210209160810.csv
--これは例です、数字部分が変化します--
が入ります。
と思っていたのですが間違っていました。
files[0]と files[1] に入るファイル名の順番は不定でした。
よってファイル名の文字数によってダウンロ-ドしたファイル名を取得します。
長い方が、ダウンロ-ドしたファイル名です。
files0 = files[0] if len(files[1]) > len(files[0]): files0 = files[1] path1 = path + files0 path2 = path + 'mane_chart_go.csv' os.rename(path1, path2)
とすると path1 にあったダウンロ-ドファイル
PFX_CHART_20210209160810.csv
のファイル名が変更されて
mane_chart_go.csv
になります。
このときダウンロ-ドファイル
PFX_CHART_20210209160810.csv
は削除されています。
これまでは、ダウンロ-ドした CSV ファイルの名前がダウンロ-ドするたびに代わっていたものが、
これによりファイル名を常に
/home/yamada/public_html/manep/mane_chart_go.csv
に変更することができます。
ここをまとめると
path = "/home/yamada/public_html/manep/" files = os.listdir(path) files0 = files[0] if len(files[1]) > len(files[0]): files0 = files[1] path1 = path + files0 path2 = path + 'mane_chart_go.csv' os.rename(path1, path2)
となります。
マネパ CSV ダウンロードファイルまとめ
ここまで説明してきた、マネパ CSV ダウンロードファイル sc_sele_mane_go-s4.py をまとめると次のようになります。
#!/usr/bin/python3 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver import ChromeOptions from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.keys import Keys # ボップアップ 2022/10/10 変更 # from selenium.webdriver.common.alert import Alert from selenium.webdriver.support.select import Select import os import datetime from dotenv import load_dotenv import time options = webdriver.ChromeOptions() # options.headless = True # 23/3/23 削除4行 # prefs オプションを設定、デフォルトのダウンロードディレクトリを変更 # options.add_experimental_option("prefs", { # "download.default_directory": "/home/yamada/public_html/manep" # }) # ウィンドウを最大化 options.add_argument('--kiosk') serv = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=serv, options=options) # 23/3/23 追加11行 driver.command_executor._commands["send_command"] = ( 'POST', '/session/$sessionId/chromium/send_command' ) params = { 'cmd': 'Browser.setDownloadBehavior', 'params': { 'behavior': 'allow', 'downloadPath': '/home/yamada/public_html/manep' } } driver.execute("send_command", params=params) # 追加ここまで print("Web 準備完了") load_dotenv() # 認証の情報は環境変数から取得する。 MANEPA_ID = os.environ['MANEPA_ID'] MANEPA_PA = os.environ['MANEPA_PA'] now = datetime.datetime.now() # 140日 減算 now100 = now - datetime.timedelta(days=140) now100str = now100.strftime('%Y%m%d') # print(now100str) # マネパ Login 画面を開く。 driver.get('https://www.moneypartners.co.jp/login/') wait = WebDriverWait(driver, 5) # すべてのページが表示されるまで待機:今回は最大5秒 element = wait.until(expected_conditions.visibility_of_all_elements_located) # 2022/10/10 追加、垂直方向に 200 ピクセル下にスクロール driver.execute_script("window.scrollBy(0, 200);") # タイトルに'マネーパートナーズ'が含まれていることを確認する。 assert 'マネーパートナーズ' in driver.title # ID,Password を入力する。 id = driver.find_element_by_name('loginId') id.send_keys(MANEPA_ID) password = driver.find_element_by_name('password') password.send_keys(MANEPA_PA) time.sleep(1) # ログインボタンをクリック login_button = driver.find_element_by_id('loginBtn') print("login_button 発見") login_button.click() time.sleep(1) driver.get('https://account.moneypartners.co.jp/retail/pfx_download_chart.do') fr_date = driver.find_element_by_id('dateFrom') print("dateFrom 発見") fr_date.send_keys(Keys.CONTROL, "a") fr_date.send_keys(Keys.DELETE) # 一旦値を選択してから消してそして入力する # fr_date.send_keys("20201201") fr_date.send_keys(now100str) tp_chat = driver.find_element_by_id('chartType') select = Select(tp_chat) select.select_by_value('7') # valueが"7"のoptionタグを選択状態にする # 銘柄選択 commo = driver.find_element_by_id('commodity') select = Select(commo) select.select_by_value('3') # valueが"3"のoptionタグを選択(豪ドル)状態にする time.sleep(1) # 送信ボタンをクリック send_button = driver.find_element_by_id("outputChart") send_button.click() time.sleep(3) # 秒 print("Download ボタンクリック") """2022/10/10 削除 logout_but = driver.find_element_by_id("logout") logout_but.click() time.sleep(3) # 秒 print("Log Out ボタンクリック") # ポップアップ発生 Alert(driver).accept() time.sleep(4) # 秒 """ driver.quit() # ブラウザーを終了する。 # ダウンロードディレクトリ、ファイル名変更 # フルパス指定 path = "/home/yamada/public_html/manep/" files = os.listdir(path) # 取得できるのはパスの文字列のリスト。 # files[*] に取得した PFX_CHART_20210209160810.csv が入る # files[*]='mane_chart_go.csv' files0 = files[0] if len(files[1]) > len(files[0]): files0 = files[1] path1 = path + files0 path2 = path + 'mane_chart_go.csv' os.rename(path1, path2) # python3 public_html/sc_sele_mane_go-s4.py
ここまでで、マネーパートナーズ会員専用サイトにログインして
パートナーズ FX-チャート足情報サイトから豪ドル/円 日足情報をダウンロ-ドするファイルが完成しました。
引き続き本ファイルの動作確認をします。