Python Selenium Web 自動操作
Selenium で CSV ファイルダウンロード
ここまでで、Selenium PDF ファイルダウンロードができました。
引き続き、Selenium で CSV ファイルをダウンロードしてみます。
ジャパンネット銀行では、全銀形式(CSVファイル/4KB)ファイルをアップロードすると
自動振込を実行することができます。
ここではこの CSV ファイルを自動ダウンロードします。
このファイルは
CSVファイルのサンプルダウンロード
から実行できます。
CSV ファイル自体は
https://www.japannetbank.co.jp/service/
payment/web_all/sample_zengin.csv
にあります。
Selenium 準備
Selenium と ChromeDriver, chromium-browser のインスト-ル
が必要です。
まだの方は、
Python Selenium Web 自動操作概要
にを参考にインスト-ルしてください。
ライブラリ取り込み
取り込む必要があるライブラリは5つです。
from selenium import webdriver
from selenium.webdriver import Chrome, ChromeOptions, Remote
# 待機に必要
import time
ただ、ChromeOptions と Remote はどちらか一つだけ import すれば動くような気もしますが、
念のため両方とも import します。
ダウンロードディレクトリ変更
prefs オプションで設定することでデフォルトのダウンロードディレクトリを変更することができます。
ファイルのダウンロード先を指定しておきたい場合に有用です。
options = webdriver.ChromeOptions() options.add_experimental_option("prefs", { "download.default_directory": "/home/yamada/public_html/download" })
download.default_directory は絶対パスで指定します。
ダウンロード実行
後は driver オブジェクトを作成し
タイミングをとりながら
driver.get( )
を実行し、"全銀形式"をクリックすればダウンロード完了です。
2022/1/11日追記
2021/10月、Virtual Ubuntu で動作していた Selenium Web 自動操作が急に動かなくなりました。
WebDriver オブジェクト作成がうまくできなくなりました。
Selenium3 が Selenium4 にアップデ-トされたことが原因だったようです。
対応策については
Selenium Web 自動操作動作停止
で解説しています。
ご覧ください。
driver = webdriver.Chrome(options=options) time.sleep(1) # 秒 driver.get("https://www.japannetbank.co.jp/service/payment/web_all/csv_download.html") driver.find_element_by_partial_link_text(u"全銀形式").click() time.sleep(5) # 秒 driver.quit() # ブラウザーを終了する。
日本語の入った文字は u'....' のように、頭に"u"をつけて
この文字列が UTF-8 で書かれている事を明言します。
find_element_by_partial_link_text(u" ")
で指定文字を探しに行き .click でその文字をクリックします。
Selenium CSV ダウンロードファイルまとめ
Selenium CSV ダウンロードファイルを作成することができました。
ファイル内容をまとめて表示します。
from selenium import webdriver from selenium.webdriver import Chrome, ChromeOptions, Remote # 待機に必要 import time options = webdriver.ChromeOptions() options.add_experimental_option("prefs", { "download.default_directory": "/home/yamada/public_html/download" }) # prefs オプションを設定、デフォルトのダウンロードディレクトリ変更 driver = webdriver.Chrome(options=options) time.sleep(1) # 秒 なくても動いた念のため driver.get("https://www.japannetbank.co.jp/service/payment/web_all/csv_download.html") # CSVファイルのサンプルダウンロードサイト driver.find_element_by_partial_link_text(u"全銀形式").click() time.sleep(5) # 秒 driver.quit() # ブラウザーを終了する。
本内容を TeraPad 等で作成したら、ファイル名を適当に
sc_sele_csv.py
として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の 共有フォルダ c:\vb_public_html にしました。
なお、
c:\vb_public_html
はゲスト OS Ubuntu のなかの
/home/yamada/public_html
とリンクしていて共有フォルダの関係にあります。
詳細は
ユ-ザ-ごとの公開ディレクトリを用意する
を読んでみてください。
Selenium CSV ダウンロードファイル動作確認
Selenium csv ダウンロードファイル sc_sele_csv.py ファイルの動作確認をしていきます。
Ubuntu ディスクトップにある □>_ アイコンから端末画面を開き、
yamada@ubuntu-20:~$ mkdir public_html/download
として CSV ダウンロードファイル保存フォルダ download をあらかじめ作成しておきます。
/home/yamada/public_html/download
が作成できました。
作成済みの方はこれはパスします。
次に、sc_sele_csv.py を実行します。
$ python3 public_html/sc_sele_csv.py
として確認します。
実行開始後 Chromium-browser(Chrome) 画面が Ubuntu ディスクトップに発生します。
「Chrome は自動テストソフトウェアによって制御されています。」
と表示され、ブラウザが自動操作されていきます。
これにより意図した操作が実行されているか確認することができます。
csv ダウンロードが実行され、ブラウザが終了します。
次に、
yamada@ubuntu-20:~$ ls -l public_html/download
でダウンロードしたファイル
/home/yamada/public_html/download/
sample_zengin.csv
を確認します。
ファイル名 sample_zengin.csv となっていますが、二度目以降は
'sample_zengin (1).csv'
のように( )付の名前でダウンロ-ドされます。
中身が同じなので、' ' 付きで表示されます。
ここまでで、Selenium で csv ファイルをダウンロードするファイルの作成と確認
を行なうことができました。
引き続き、Selenium csv ファイルダウンロードを Chromium 画面なしで行いたいと思います。