初めに
弊社では、Powershell+Internet ExplorerのWEBスクレイピングによる自動化を行ってきましたが、マイクロソフト社から2022年6月15日以降Internet Explorerのサポート打ち切りが発表されました。
代替手段として、powershell + selenium chromeで環境構築を行った際の覚書記事になります。(2021/11/11現在)
powershell + selenium edgeでの環境構築も検討しましたが、現webdriverのバージョンではremote-debugging-portを使ってのブラウザ再操作ができなかったため(EdgeのChromeドライババージョンのエラーがでる)最終的にChromeでの対応となりました。
環境
OS :WINDOWS10 21H1
powershell : バージョン: 5.1.19041.1320(OS標準)
chrome : バージョン: 95.0.4638.69(記事作成時の最新)
※CHROMEブラウザの「ヘルプ」→「Google Chromeについて」で確認できます
POWERSHELLでのselenium Chrome環境構築について(概要)
①SeleniumのWebDriverをダウンロードする
②ダウンロードされたファイル(nupkgファイル)から、DLLファイルを獲得する。
③Chrome Driverをダウンロードする
④POWERSHELLスクリプトにDLしたファイルを組み込む。
POWERSHELLでのselenium Chrome環境構築について(詳細)
①SeleniumのWebDriverをダウンロードする
selenium.devにアクセスし、C#のdriverをダウンロードする
画面を少しスクロールしたところにある、Selenium Clients and WebDriver Language BindingsのC#版が対象。クリックするとファイルがダウンロードされます。そのままでは使えないので②の工程を実施してください。
②ダウンロードされたファイル(nupkgファイル)から、DLLファイルを獲得する。
該当ファイルを右クリック→プロパティを開き、セキュリティの許可するをチェック
セキュリティ設定がOFFのままだと、処理に影響があるみたいです。
該当ファイルの拡張子をzipに変更の上、解凍しDLLファイルを獲得する。
ファイルをselenium.webdriver.4.0.1.nupkgからselenium.webdriver.4.0.1.zipにリネームしてください。
リネームしたZIPファイルを解凍してください。
powershellのVersionが5.*.の場合は、net48フォルダの中にあるDLLファイルが該当のファイルになります。
※powershellのVersionが6..*の場合はnetstandardのDLLを利用するようです。
➂Chrome Driverをダウンロードする
ダウンロードサイトから、現在利用中のCHROMEのバージョンに応じたドライバーをダウンロードする。
④POWERSHELLスクリプトにDLしたファイルを組み込む。
参考に、”開きたいURL”に格納されたURLのHTMLソースをクリップボードに格納するスクリプトです。
$webDriverDllPath = "seleniumドライバの格納場所"
$chromeDriverDirPath = "CHROMEドライバの格納場所"
# dll読み込み
Add-Type -Path $webDriverDllPath
# ドライバにオプションを読み込み用
$Options = New-Object OpenQA.Selenium.chrome.ChromeOptions
# DebuggerAddressを指定したCHROMEを操作する場合
# $Options.DebuggerAddress = "127.0.0.1:9222"
#
# chrome起動
$chromeDriver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($chromeDriverDirPath,$Options)
# 日本語化け対応 文字コードをSHIFT-JISに
# chcp 932
# URL開く
$chromeDriver.Url = "開きたいURL"
# 表示中のページソースを$htmlに格納
$html=$chromeDriver.PageSource
# htmlの内容をクリップボードにコピー
$html|CLIP
exit
最後に
旧処理から、ほとんど関数関係の互換がなく、ほとんど書き換えになってしまいましたが
動作はかなり安定するようになりました。
Seleniumの機能は便利なものが多いようなので、活用していければと思います。