さくら 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-チャート足情報サイトから豪ドル/円 日足情報をダウンロ-ドするファイルが完成しました。
引き続き本ファイルの動作確認をします。


  • マネパ CSV ダウンロードファイル作成 に進む
  • Money Partners サイトに入る前準備 に戻る
  • Selenium4 で CSV ファイルダウンロード に戻る
  • selenium4 テストプログラムまとめ に戻る
  • Google Chrome のインストール に戻る
  • Selenium Web 自動操作動作停止 に戻る
  • 70VPS に戻る