SeleniumでPythonからサイトをスクリーンショット撮影
Seleniumはweb関連の機能テストを自動で行うために用いられるツールです.
Webサイトの校正や原稿収集で,スクリーンショットを保存する際に有用です.
目次
インストール
以下の環境におけるインストール例です.
- macOS 12.4
- python 3.10.1
- Google Chrome 103.0.5060.53
pip install selenium |
インストール後のテスト
まず,Pythonを起動します.
python3 |
そして,以下を実行します.
from selenium import webdriver |
すると,次の通り動作します.
chromedriver_binary
と,selenium
よりwebdriver
をインポート- Google Chromeを立ち上げ
https://example.com
というURLを取得test.png
という名前でスクリーンショットをカレントディレクトリに作成- Google Chromeを終了
スクリーンショット
それでは,pngのスクリーンショットを撮影してまわります.
予めlist.txt
の各行にURLを列挙しておき,以下を実行します.
from selenium import webdriver |
撮影ページが多い場合に余計な負荷をかけぬよう,options.add_argument('--headless')
でブラウザを起動しないで実行する方針をとっています.
ここをコメントアウトすれば,実行されている様子が確認できます.
time.sleep(2)
によりwebページの読み込みに2秒確保していますが,開くのが遅いページがあるようなら,もっと長めに確保してください.
ソースの取得
サイトのソースはdriver.page_source
で取得できます.
その書き出しは,上でスクリーンショットを撮影しているところで,
fileName = 'file_' + i.__str__() + '.html' |
とすることで行えます.
ログイン
Basic認証
Basic認証がかけられたサイトを撮影する場合,列挙するURLにid:password@
という部分を加えます.
id
とpassword
は適当なものを代入してください.
https://id:password@example.com |
会員制サイト
WordPress ver.5.5のログインページでの例です.
driver.get(url)
した後,IDとパスワードを入力フォームに投げ込み,ボタンを押下します.
user_id = 'ログインID' |