Selenium スクレイピング

【Selenium】Webdriverのバージョン管理を簡単に自動化する方法

この記事は約5分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です!

 

今回は案件で作成したseleniumのコードが使用しているwebdriverのchromeがバージョン更新で定期的に使えなくなるエラーについて相談を受けたので自動でバージョン更新して安定して動作するように調査した結果をまとめておこうと思います。

 

webdriver-managerで更新の自動化が可能

 

結論からいくと「webdriver-manager」というライブラリを使用することで常にSeleniumで使用するGoogleChromeのWebdriverのバージョンを最新版にすることが可能みたいです。まずは必要なライブラリをPIPでインストールします

 

# ライブラリをインストールする
$ pip install webdriver-manager
$ pip install selenium
$ pip install chromedriver_binary

 

 

サンプルコードを実行する

 

以下にサンプルコードを記述します。

seleniumのバージョンは4.8を使用しています。

 

ブラウザ起動する場合

 

from selenium import webdriver 
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

url = 'https://tkstock.site/' 

d = DesiredCapabilities.CHROME
d['goog:loggingPrefs'] = {'performance': 'ALL'} 

driver = webdriver.Chrome(ChromeDriverManager().install(),desired_capabilities=d) 
driver.set_window_size('1200','1000')
driver.get(url)

 

ヘッドレスモードで使用する場合

 

上記のコードだと

options.add_argument('--headless')

 

を追加してヘッドレスモードを指定するとブラウザがクラッシュして起動しない場合があります。その際にバイナリーのウェブドライバーを使用する必要があります。webdriver-managerでドライバーは常に最新のものを使用できますが、それとバイナリのバージョンが違うとエラーになるためSubprocessを使用してバイナリのバージョンも常に最新に合わせる必要があります。

 

参照:https://tkstock.site/2022/05/31/%e3%80%90python%e3%80%91selenium%e3%81%a7chromedriver%e3%81%aepath%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%8c%e5%87%ba%e3%81%9f%e6%99%82%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/

 

 

<サンプルコード>

import subprocess
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import chromedriver_binary 
from selenium.webdriver.chrome.options import Options

cmd = 'pip install --upgrade chromedriver_binary' 
res = subprocess.call(cmd, shell=True)
url = 'https://tkstock.site/'
d = DesiredCapabilities.CHROME
d['goog:loggingPrefs'] = { 'performance': 'ALL' }

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

driver = webdriver.Chrome(ChromeDriverManager().install(),desired_capabilities=d,chrome_options=options)
driver.set_window_size('1200','1000')
driver.get(url)

 

import chromedriver_binaryはブラウザを実際に起動しないheadlessモードを使用する際に必要になります。

 

終わり

 

これでコマンドラインなどでドライバーのバージョンを更新することなく、PYファイルのみで最新の状態を維持してスクレイピングを行うことが可能になります。

 

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:【Python】Seleniumで使用するWebDriverの更新を自動化してコードの挙動を安定させる […]

  2. […] 関連記事:SeleniumのChromeDriverの更新・バージョン管理を自動化する方法 […]

  3. […] 関連記事:SeleniumのChromeDriverの更新・バージョン管理を自動化する方法 […]

  4. […] 関連記事:SeleniumのChromeDriverの更新・バージョン管理を自動化する方法 […]

  5. […] SeleniumのChromeDriverの更新・バージョン管理を自動化する方法 […]

タイトルとURLをコピーしました