Windows10にてPythonとSeleniumでHeadless Chromeを試してみる

PythonでWebブラウザーを経由したスクレイピングを行うために、以下の本を参考にしました。

Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう

その中でブラウザーを使用したスクレイピングの例として、Selenium + PhantomJSを使用するやり方が紹介されていました。
本ではDocker上にUbuntuを構築していましたが、WindowsでもできそうだったのでそのままWindowsで試してみることにしました。

環境を整えたあとで、試しにウェブページのスクリーンショットを取る簡単なプログラムを書いて動かしたのですが、なんと警告が出てしまいました。

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '

最初はエラーかと思ったのですが、きちんとスクリーンショットは取れているようです。

警告メッセージを読んで見ると、

「PhantomJSのSeleniumのサポートは廃止されたので、代わりにChromeまたはFirefoxのヘッドレスバージョンを利用してください」

と書いてあるではありませんか。
どうやらすでにPhantomJSのSeleniumのサポートされていないようです。

本に書いてあることが古くてもう使えないことは日常茶飯事なので、慌てずにサクッとgoogleで検索します。
すぐにChromeのヘッドレスブラウザとして、Headless Chromeというものがあることが分かりました。
PhantomJSの代わりにHeadless Chromeを使ってみることにします。

参考:SeleniumからHeadless Chromeを使ってみた
https://qiita.com/orangain/items/db4594113c04e8801aad

前置きが長くなりました。
以下にPythonとSeleniumでHeadless Chromeを使ったやり方を記録しておきます。

環境構築

①pipでSeleniumをインストール

pycharmのターミナルで以下を実行します。

pip install selenium

普通にコマンドプロンプトからでも大丈夫です。

②chromeドライバをダウンロード

https://sites.google.com/a/chromium.org/chromedriver/downloads
(バージョンはChromeDriver 2.37)
windows版は32ビット版しかないので、32ビット版をダウロード


解凍して任意の場所に置きます。
とりあえずCドライブの直下に置きました。
C:\chromedriver_win32

③chromeドライバのPathを通す

環境変数のPathにchromeドライバが置いてあるパスを追加します。
「コントロールパネル」-「システム」-「システムの詳細設定」-「環境変数」
システムの環境変数にある、Pathを選択して「編集」
「新規」からchromeドライバが置いてあるパスを追加

↑一番下に「C:\chromedriver_win32」が追加されています。

簡単に書きましたが、Pathの通し方がわからない人は
windows10 path 設定」などで検索してください。

Headless Chromeでスクリーンショットを取得

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

url = 'https://www.python.org/'

options = Options()
options.add_argument('--headless')

browser = webdriver.Chrome(chrome_options=options)
browser.implicitly_wait(3)

browser.get(url)
browser.save_screenshot('python.png')

browser.quit()

警告が出ずにスクリーンショットが取れました。
また、ブラウザも表示されませんでした。

ちなみに、–healessオプションを消すとブラウザが表示されます。

from selenium import webdriver

url = 'https://www.python.org/'

browser = webdriver.Chrome()
browser.implicitly_wait(3)

browser.get(url)
browser.save_screenshot('python.png')

browser.quit()

参考:PhantomJSでスクリーンショットを取得

参考までに、PhantomJSを使った方法も書いておきます。

①pipでSeleniumをインストール

Headless Chromeと同じ

②PhantomJSのダウンロード

http://phantomjs.org/download.html
windowsを選択してzipファイルをダウンロードします。
解凍して適当な場所に格納します。
環境変数からPathを通します。

③ソースコード

from selenium import webdriver

url = 'https://www.python.org/'

browser = webdriver.PhantomJS()
browser.implicitly_wait(3)

browser.get(url)
browser.save_screenshot('python.png')

browser.quit()

シェアする

  • このエントリーをはてなブックマークに追加

フォローする