🐚
【PowerShell】SeleniumモジュールでWebスクレイピングしたい
初めに
Windowsで面倒な環境構築をせずにスクレイピングがしたい
最近はWSL2でdockerコンテナを動かせば簡単にseleniumの環境構築もできると思いますが、会社の環境だとできなかったりするのでもっとお手軽にやりたい。
というわけで調べたところPowerShell用のモジュールがあったので使用してみることに。
大まかな使いかたをまとめました。
環境
$PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.1
PSEdition Desktop
...
#Seleniumモジュールのバージョン
Get-InstalledModule -Name selenium
Version Name Repository Description
------- ---- ---------- -----------
3.0.1 Selenium PSGallery Web automation using the Selenium Web...
クロームのバージョン
実際に使ってみる
モジュールのインストール
下記コマンドで最新のモジュールをインストールできます。
Install-Module -Name Selenium
指定したブラウザを起動する
#Chromeを使用する場合
$Driver = Start-SeChrome
#Edgeを使用する場合
$Driver = Start-SeEdge
#Firefoxを使用する場合
$Driver = Start-SeFirefox
#IEを使用する場合
$Driver = Start-SeInternetExplorer
#-Headlessオプションでブラウザ非表示となる
$Driver = Start-SeChrome -Headless
ここではまった事
いつも通り$Driver = Start-SeChrome
を実行するとエラーになった。
そういえば、クロームをアップデートした後だったのでバージョンを確認して、対応するChromeDriverをダウンロードしなおしたら正常に動作した。ダウンロードはこちらから
下記にあるドライバーを更新しました。(クロームだとchromedriver.exe)
C:\Users\ユーザ名\Documents\WindowsPowerShell\Modules\Selenium\3.0.1\assemblies
指定のURLへ移動
Enter-SeUrl "<URL>" -Driver $Driver
エレメントの取得
#IDで指定
$Element = Find-SeElement -Driver $Driver -Id "<ID>"
#ClassNameで指定
$Element = Find-SeElement -Driver $Driver -ClassName "<ClassName>"
#TagNameで指定(下記はinputタグすべてを抽出)
$Element = Find-SeElement -Driver $Driver -TagName input
#XPathで指定
$Element = Find-SeElement -Driver $Driver -XPath "<XPath>"
取得したエレメントに対する操作
キーボード入力
#通常文字列
Send-SeKeys -Element $Element -Keys "<文字列>"
#特殊キー
Send-SeKeys -Element $Element -Keys "{{ENTER}}"
クリックする
#下記2つは同じ動作をするはず。。
$Element.Click()
$Element | Invoke-SeClick -Driver $Driver
#JavaScriptでクリック(上記2つでクリックできなかった場合に使用してうまくいった。)
$Element | Invoke-SeClick -JavaScriptClick -Driver $Driver
スクリーンショットを保存する
$Screenshot = Invoke-SeScreenshot -Target $Driver
Save-SeScreenshot -Screenshot $Screenshot -Path ./test.png
終了して閉じる
Stop-SeDriver -Driver $Driver
Discussion