LoginSignup
3
4

Python3とSeleniumとGoogle ChromeでWebページのスクリーンショットはSelenium-Screenshotが便利です

Last updated at Posted at 2020-02-13

Python 3とSeleniumとGoogle ChromeでWebページのスクリーンショットを取得する方法の1つとして、Selenium標準の save_screenshot メソッドを使う方法がありますが、この方法の場合、指定されたサイズ(ウインドウサイズ)のスクリーンショットを取得することはできますが、Webページ全体のスクリーンショットを取得することはできません。
Googleで検索してみると、色々な方法がヒットしますが、最も簡単で、かつ再利用性の高い方法は、Selenium-Screenshotパッケージを使う方法です。Selenium-Screenshotパッケージを使用すると、簡単にWebページ全体のスクリーンショットや、HTML要素を指定したスクリーンショットを取得することができます。

インストール

1.Python3のダウンロードとインストール

Windowsの場合は、下記URLよりインストーラーをダウンロードしてインストールする方法が簡単です。
https://www.python.jp/
LinuxやMac, FreeBSDなどでは、パッケージマネージャからインストールします。
例えば、Ubuntu 18.04LTSの場合はちょっと古いですが(実行時にDeprecatedが出るかも知れませんが)以下が参考になるでしょう。
Ubuntu 18.04LTSとchromium-browser(Headless)とpython3でSeleniumする
Pythonのバージョン複数分けて使いたい場合は、pythonbrewのようなvirtualenvっぽい何かを利用したり、Dockerで環境を分けるのが良いでしょう。

2.パッケージのインストール

seleniumと、Selenium-Screenshotパッケージをインストールします。

pip install selenium
pip install Selenium-Screenshot

3.ChromeDriverのダウンロード

下記URLより、自分の環境(Chromeのバージョン)に合ったChromeDriverをダウンロードします。
https://chromedriver.chromium.org/downloads
なお、Windows以外でパッケージマネージャよりSeleniumをインストールした場合は、パッケージマネージャよりChromeDriverをインストール出来る場合があります。その場合は、特別な事情(パッケージマネージャよりインストールされるものが満足に動作しない、機能が足りない等)を除き、可能な限りパッケージマネージャよりインストールされるものを使用するのが良いでしょう。

コード例

以下はWindowsで、https://www.asahi.com/ のスクリーンショットを取得する例です。
なお、ChromeDriver(chromedriver.exe)はPythonスクリプトと同じフォルダ(ディレクトリ)にあることを、ここでは想定しています。
環境に合わせて、executable_path(ChromeDriverのパス)を変更することで、Windowsに限らず他のOSでも動作します。

from Screenshot import Screenshot_Clipping
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
ob=Screenshot_Clipping.Screenshot()
driver = webdriver.Chrome(executable_path=r".\chromedriver.exe", options=options)
driver.set_window_size(1280, 720)
driver.get("https://www.asahi.com/")
ob.full_Screenshot(driver, save_path=r'.', image_name='Myimage.png')
driver.close()
driver.quit()

上記Pythonスクリプトを実行すると、Myimage.pngというファイル名でスクリーンショット画像が出力されます。
その画像を開くと、以下のようにWebページ全体のスクリーンショットを確認することができます。
image.png

参考

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4