Python Selenium Web 自動操作
Selenium で PDF ファイルダウンロード
ここまでで、Selenium での Google 検索ファイルの確認と定時実行を行なうことができました。
引き続き、Selenium で PDF ファイルをダウンロードしてみます。
神奈川県の場合パスボ-トを申請するとき
県外に住民登録(住民票)があり、一時的に県内に住んでいる人は居所(きょしょ)申請
をする必要があります。
この書式は
居所証明書(PDF/79KB)
にあります。
雇用されている会社等に証明してもらうものです。
今回はこの居所証明書の書式を自動でダウンロードします。
Selenium 準備
Selenium と ChromeDriver, chromium-browser のインスト-ル
が必要です。
まだの方は、
Python Selenium Web 自動操作概要
にを参考にインスト-ルしてください。
ライブラリ取り込み
取り込む必要があるライブラリは5つです。
from selenium import webdriver
from selenium.webdriver import Chrome, ChromeOptions, Remote
# 待機に必要
import time
ダウンロードディレクトリ変更
prefs オプションで設定することでデフォルトのダウンロードディレクトリを変更することができます。
ファイルのダウンロード先を指定しておきたい場合に有用です。
options = webdriver.ChromeOptions() options.add_experimental_option("prefs", { "download.default_directory": "/home/yamada/public_html/download", "plugins.always_open_pdf_externally": True })
download.default_directory は絶対パスで指定します。
PDF はデフォルトでは Chrome で表示されてしまうので、ファイルとしてダウンロードできるように、
"plugins.always_open_pdf_externally": True
を指定します。
ダウンロード実行
後は driver オブジェクトを作成し
タイミングをとりながら
driver.get( )
を実行すればダウンロード完了です。
2022/1/10日追記
2021/10月、Virtual Ubuntu で動作していた Selenium Web 自動操作が急に動かなくなりました。
WebDriver オブジェクト作成がうまくできなくなりました。
Selenium3 が Selenium4 にアップデ-トされたことが原因だったようです。
対応策については
Selenium Web 自動操作動作停止
で解説しています。
ご覧ください。
driver = webdriver.Chrome(options=options) time.sleep(1) # 秒 driver.get("https://www.pref.kanagawa.jp/osirase/02/2315/down/kyoshoshomei.pdf") # 居所証明書(PDF/79KB) time.sleep(5) # 秒 driver.quit() # ブラウザーを終了する。
Selenium PDF ダウンロードファイルまとめ
Selenium PDF ダウンロードファイルを作成することができました。
ファイル内容をまとめて表示します。
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/yasuhiro/public_html/download", "plugins.always_open_pdf_externally": True }) # prefs オプション設定、デフォルトのダウンロードディレクトリ変更 driver = webdriver.Chrome(options=options) time.sleep(1) # 秒 driver.get("https://www.pref.kanagawa.jp/osirase/02/2315/down/kyoshoshomei.pdf") # 居所証明書(PDF/79KB) time.sleep(5) # 秒 driver.quit() # ブラウザーを終了する。
本内容を TeraPad 等で作成したら、ファイル名を適当に
sc_sele_pdf.py
として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の 共有フォルダ c:\vb_public_html にしました。
なお、
c:\vb_public_html
はゲスト OS Ubuntu のなかの
/home/yamada/public_html
とリンクしていて共有フォルダの関係にあります。
詳細は
ユ-ザ-ごとの公開ディレクトリを用意する
を読んでみてください。
Selenium PDF ダウンロードファイル動作確認
Selenium PDF ダウンロードファイル sc_sele_pdf.py ファイルの動作確認をしていきます。
Ubuntu ディスクトップにある □>_ アイコンから端末画面を開き、
yamada@ubuntu-20:~$ mkdir public_html/download
として PDF ダウンロードファイル保存フォルダ download をあらかじめ作成しておきます。
/home/yamada/public_html/download
が作成できました。
次に、sc_sele_pdf.py を実行します。
$ python3 public_html/sc_sele_pdf.py
として確認します。
実行開始後 Chromium-browser(Chrome) 画面が Ubuntu ディスクトップに発生します。
「Chrome は自動テストソフトウェアによって制御されています。」
と表示され、ブラウザが自動操作されていきます。
これにより意図した操作が実行されているか確認することができます。
PDF ダウンロードが実行され、ブラウザが終了します。
次に、
yamada@ubuntu-20:~$ ls -l public_html/download
でダウンロードしたファイル
/home/yamada/public_html/download/kyoshoshomei.pdf
を確認します。
ファイル名 kyoshoshomei.pdf となっていますが、二度目以降は
'kyoshoshomei (1).pdf'
のように( )付の名前でダウンロ-ドされます。
中身が同じなので、' ' 付きで表示されます。
ここまでで、Selenium で PDF ファイルをダウンロードするファイルの作成と確認
を行なうことができました。
引き続き、Selenium PDF ファイルダウンロードを Chromium 画面なしで行いたいと思います。