【Python】自動でスクリーンショットを撮影する方法紹介!【コード例・コピペ可】
「スクリーンショットを自動で撮らせたい」
「Pythonで自動化するにはどうする?」
このような方に向けて、今回は、スクリーンショットの撮影を自動化するコードを解説していきます。
Pythonの自動化モジュールのseleniumを使って実装します。(selenium?なんだそれ。と思った方でも大丈夫です。)
実際にコードを動くことは確認済みなので、コピペなどして実行していただければと思います。
目次(クリックで読みたい部分にジャンプできます)
今回の実装内容
スクリーンショットは、基本撮影したいページへ移動して、対象ページを撮影します。
対象ページに移動して、撮影するので手間がとてもかかります。
ただ、スクリーンショットを撮りたいだけの場合は、Pythonでコードを書いてしまった方が早いです。
なので、今回は、「URLを指定して、対象のURLにPythonが見に行ってスクリーンショットを撮ってくる」ことを実装します。
seleniumとは
実装するにあたって、Pythonのseleniumというモジュールを使います。
seleniumは自動検索などを可能とするモジュールです。
スクリーンショットのほかにも、特定ワードの検索結果を自動で取得するや自動でクローリングするなどのことができます。
全体の流れ
今回の実装は以下3ステップです。
全体の流れ
①特定のURLにアクセス
②撮影範囲の取得
③スクリーンショットを撮影
では、それぞれのコードを順番に見ていきます。
特定のURLにアクセス
driver = webdriver.Chrome()
url = "https://ja.wikipedia.org/
driver.get(url)
今回はwikipedia のランディングページにアクセスします。
ここで、クロームドライバーでURLを指定します。
この形は、seleniumなどでURLを取得するのによくある形です。他にも使えるかと思いますので、覚えておきましょう。
今回の実装では、ChromeDriverとseleniumをインストールする必要があります。
以下の記事でインストール方法も解説していますので参考にしてください。
撮影範囲の取得
width = driver.execute_script("return document.body.scrollWidth")
height = driver.execute_script("return document.body.scrollHeight")
driver.set_window_size(width,height)
以上のコードでwebページのサイズを取得することができます。
また、全画面を取得する場合は以下の記事で紹介しているヘッドレスにする設定をクロームドライバーのオプションに設定すればよいだけです。
スクリーンショットを撮影
driver.save_screenshot("screenshot.png")
ドライバーに、save_screenshot()でスクリーンショットを保存します。
引数には、スクリーンショットのファイル名を指定します。
全コード
from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "https://srad.jp"
driver.get(url)
time.sleep(3)
width = driver.execute_script("return document.body.scrollWidth")
height = driver.execute_script("return document.body.scrollHeight")
driver.set_window_size(width,height)
time.sleep(3)
driver.save_screenshot("screenshot.png")
driver.quit()
まとめ
今回は、自動でスクリーンショットを撮影する方法について解説いたしました。
seleniumと組み合わされてよく使われるのが、BeautifulSoupモジュールです。
ページ内の要素を自動的に取得することができます。以下の記事で入門編としてコードを含めて紹介しています。併せてご覧になってはいかがでしょうか。