Python Selenium Web 自動操作
Selenium CSV ファイルダウンロード Chromium 画面なし
引き続き Chromium(Chrome) 画面なしで CSV ファイルをダウンロードしてみましょう。
headless の chrome を用いてファイルをダウンロードする機能は
デフォルトの chromedriver にはセキュリティ上の観点から搭載されていないようです。
しかたがないので直接 post 通信で設定を送ってあげる必要があります。
以下の内容の 'Page.setDownloadBehavior' コマンドを設定します。
細かな内容はよく理解できませんがおまじないのように書き込みます。
driver.command_executor._commands["send_command"] =( "POST", '/session/$sessionId/chromium/send_command' ) params = { 'cmd': 'Page.setDownloadBehavior', 'params': { 'behavior': 'allow', 'downloadPath': download_dir} }
'/session/$sessionId
/chromium/send_command'
は POST で設定を送り込むパスのようです。
'downloadPath' はあらかじめ
download_dir = "/home/yamada/public_html/download"
と設定しておきます。
絶対パスで指定します。
この辺のところを詳しく書いているサイトを検索してみましたが見つかりませんでした。
ライブラリ取り込み
それでは頭から書き始めます。
取り込む必要があるライブラリは4つです。
from selenium import webdriver
from selenium.webdriver import Chrome, ChromeOptions
# 待機に必要
import time
headless 設定
headless 設定をして Chromium 画面が表示しないようにします。
options.add_argument('--headless')
後は driver オブジェクトを作成します。
driver = webdriver.Chrome(options=options)
ダウンロード実行
後はおまじないをかけて
driver.execute("send_command", params=params)
で設定
driver.get("https://www.japannetbank.co.jp/service/payment/web_all/csv_download.html") # CSVファイルのサンプルダウンロードサイト driver.find_element_by_partial_link_text(u"全銀形式").click()
で get してクリックして少し待てば
time.sleep(5)
ダウンロ-ドされます。
driver.quit()
あとはブラウザーを終了しておきましょう。
Selenium CSV ファイルダウンロード Chromium 画面なしまとめ
ファイル内容をまとめて表示します。
from selenium import webdriver from selenium.webdriver import Chrome, ChromeOptions # 待機に必要 import time download_dir = "/home/yamada/public_html/download" options = webdriver.ChromeOptions() options.add_argument('--headless') driver = webdriver.Chrome(options=options) driver.command_executor._commands["send_command"] = ( "POST", '/session/$sessionId/chromium/send_command' ) params = { 'cmd': 'Page.setDownloadBehavior', 'params': { 'behavior': 'allow', 'downloadPath': download_dir } } driver.execute("send_command", params=params) 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-1.py
として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の 共有フォルダ c:\vb_public_html にしました。
なお、
c:\vb_public_html
はゲスト OS Ubuntu のなかの
/home/yamada/public_html
とリンクしていて共有フォルダの関係にあります。
詳細は
ユ-ザ-ごとの公開ディレクトリを用意する
を読んでみてください。
Selenium CSV ダウンロード Chromium 画面なしファイル動作確認
Selenium CSV ダウンロードファイル sc_sele_csv-1.py ファイルの動作確認をしていきます。
Ubuntu ディスクトップにある □>_ アイコンから端末画面を開き、
yamada@ubuntu-20:~$ mkdir public_html/download
として CSV ダウンロードファイル保存フォルダ download をあらかじめ作成しておきます。
作成済みの方は省略です。
/home/yamada/public_html/download
が作成できました。
次に、sc_sele_csv-1.py を実行します。
$ python3 public_html/sc_sele_csv-1.py
として確認します。
実行開始後今回は Chromium-browser(Chrome) 画面は Ubuntu ディスクトップに発生しません。
何事もなく CSV ダウンロードが実行され、ファイルの実行が終了します。
次に、
yamada@ubuntu-20:~$ ls -l public_html/download
でダウンロードしたファイル
/home/yamada/public_html/download/
sample_zengin.csv
を確認します。
ファイル名は sample_zengin.csv となって、二度目以降は上書きされます。
ここまでで、Chromium 画面なしで Selenium CSV ファイルダウンロードができました。
引き続き、Selenium で ****CSV ファイルをダウンロードしてみます。