Python Selenium Web 自動操作
Selenium CSV ダウンロ-ド-2 ファイルまとめ
ここまでで、マネーパートナーズ会員専用サイトにログインして、
パートナーズ FX-チャート足情報サイトから米ドル日足情報をダウンロ-ドするファイルが完成しました。
ファイル内容をまとめて表示します。
from selenium import webdriver
from selenium.webdriver import Chrome, ChromeOptions, Remote
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.support.select import Select
import datetime
import os
from dotenv import load_dotenv
load_dotenv()
# 認証の情報は環境変数から取得する。
MANEPA_ID = os.environ['MANEPA_ID']
MANEPA_PA = os.environ['MANEPA_PA']
# print(MANEPA_ID)
# print(MANEPA_PA)
now = datetime.datetime.now()
# 100日 減算
now10 = now - datetime.timedelta(days=100)
now10str = now10.strftime('%Y%m%d')
# print(now10str)
options = ChromeOptions()
# ヘッドレスモードを有効にする
# options.headless = True
# prefs オプションを設定、デフォルトのダウンロードディレクトリ変更
options.add_experimental_option("prefs", {
"download.default_directory": "/home/yamada/public_html/download"
})
# Chrome の WebDriverオブジェクト作成
driver = Chrome(options=options)
time.sleep(3) # 必須
# マネパ Login 画面を開く。
driver.get('https://www.moneypartners.co.jp/login/')
# タイトルに'マネーパートナーズ'が含まれていることを確認
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(now10str)
tp_chat = driver.find_element_by_id('chartType')
select = Select(tp_chat)
select.select_by_value('7')
# valueが"7"の option タグを選択
time.sleep(1)
# 送信ボタンをクリック
send_button = driver.find_element_by_id("outputChart")
send_button.click()
time.sleep(1) # 秒
logout_but = driver.find_element_by_id("logout")
logout_but.click()
time.sleep(3) # 秒
driver.quit() # ブラウザー終了
本内容は動作確認のため TeraPad 等で作成したら、ファイル名を適当に
sc_sele_mane.py
として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の 共有フォルダ c:\vb_public_html にしました。
なお、
c:\vb_public_html
はゲスト OS Ubuntu のなかの
/home/yamada/public_html
とリンクしていて共有フォルダの関係にあります。
詳細は
ユ-ザ-ごとの公開ディレクトリを用意する
を読んでみてください。
Selenium CSV ダウンロ-ド-2 ファイル動作確認
sc_sele_mane.py ファイルの動作確認をしていきます。
Ubuntu ディスクトップにある □>_ アイコンから端末画面を開き、
yamada@ubuntu-20:~$ mkdir public_html/download
として CSV ダウンロードファイル保存フォルダ download をあらかじめ作成しておきます。
/home/yamada/public_html/download
が作成できました。
作成済みの方はこれはパスします。
次に、sc_sele_mane.py を実行します。
$ python3 public_html/sc_sele_mane.py
として確認します。
実行開始後 Chromium-browser(Chrome) 画面が Ubuntu ディスクトップに発生します。
「Chrome は自動テストソフトウェアによって制御されています」
と表示され、ブラウザが自動操作されていきます。
これにより意図した操作が実行されているか確認することができます。
csv ダウンロードが実行され、ブラウザが終了します。
次に、
yamada@ubuntu-20:~$ ls -l public_html/download
でダウンロードしたファイル
/home/yamada/public_html/download/
PFX_CHART_20210206163901.csv
を確認します。
なお、ファイル名はダウンロ-ドした西暦月日時分秒により設定されています。
Selenium CSV ダウンロ-ド-2 ファイル Chromium 画面なし実行
Selenium CSV ダウンロ-ド-2 ファイルを Chromium 画面なしで実行するには
25行目の
# options.headless = True
のコメントを解除し、
options.headless = True
とします。
保存ファイル名は sc_sele_mane-1.py として実行します。
$ python3 public_html/sc_sele_mane-1.py
として確認します。
実行開始後今回は Chromium-browser(Chrome) 画面は Ubuntu ディスクトップに発生しません。
コメント文がでるだけで何事もなく CSV ダウンロードが実行され、ファイルの実行が終了します。
yamada@ubuntu-20:~$ ls -l public_html/download
でダウンロードしたファイル
/home/yamada/public_html/download/
PFX_CHART_20210206173001.csv
を確認します。
ファイル名はダウンロ-ドした西暦月日時分秒により設定されています。
でもちょっと待ってください。
Selenium CSV ファイルダウンロード Chromium 画面なし
で CSV ファイルをダウンロードのために使ったおまじないをかけていませんね。
なぜ今回おまじないなしでうまくいくのかよく分かりません。
一回おまじないをかけるとずっと有効なのかもしれません。
アップデ-トにより改善されたのでしょうか?
謎です。
ここまでで、Selenium CSV ダウンロ-ド-2 ファイルの作成と確認
を行なうことができました。
これで、Python Selenium Web 自動操作 に関わる説明は終りです。