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 ファイルをダウンロードしてみます。


  • Selenium で CSV ファイルダウンロード-その2 に進む
  • Selenium で CSV ファイルダウンロード に戻る
  • Selenium PDF ファイルダウンロード Chromium 画面なし に戻る
  • Selenium で PDF ファイルダウンロード に戻る
  • Selenium Google 検索ファイル動作確認 に戻る
  • Selenium で Google 検索開始 に戻る
  • Python Selenium Web 自動操作概要 に戻る
  • 70VPS に戻る