Excel VBAでChromeブラウザ内をWebスクレイピングする方法と注意点
このブログではアフィリエイト・アドセンス広告を利用しています
当ブログでは、アドセンス・アフィリエイト広告を掲載しています。
消費者庁が発表しているルールに沿って記事を作成していますが、問題のある表現を見つけた際にはご連絡ください。
ExcelVBAからIEの操作はいろいろと試してきましたが、普段使用しているChromeブラウザから必要な情報を収集できる方法を探ってみました。
目次(読みたいところへジャンプ!)
Excel VBAでChromeブラウザをスクレイピングするための下準備
Excel VBAでChromeブラウザ内をスクレイピングするためには、次の下準備が必要です。
Selenium Basicのダウンロードとインストール
Selenium Basicとは、VBAからChromeを簡単に操作できるようになるライブラリ(追加機能がまとめられたファイル)です。
下のリンクから、Selenium Basicをダウンロードしてインストールをしておきましょう。
Chrome Driverのダウンロード
Selenium Basic内のCromeドライバーと使用中のChromeのバージョンが異なると、エラーが発生してしまいます。
そのため、使用中のChromeのバージョンを「ヘルプ」→「Chromeについて」メニューで選択して確認しましょう。
確認できたChromeのバージョンに合うChrome Driverを下のリンクからダウンロードします。
ダウンロードしたChrome DriverをインストールしたSelenium Basicフォルダ内へコピーをして、上書きしてしまえばOKです。
Selenium Type Libraryの参照設定
インストールしたSelenium BasicをVBAで使用できるように、Selenium Type Libraryの参照設定をしておきます。
「開発」メニュー→「VisualBasic」→「ツール」→「参照設定」で、Selenium Type Libraryを見つけてチェックを入れれば完了です。
これで、Excel VBAの中から、簡単にChromeをスクレイピングできるようになりました。
ExcelからWebの情報を取得できるのはWEBSERVICE関数
WEBSERVICE関数を使えば、ExcelからWebデータを取得することが簡単にできます。
WEBSERVICE関数の引数はURLのみ。データを取得したいURLを設定するだけです。
Excel VBAでSelenium.ChromeDriverを使えばChromeのスクレイピングが簡単
Selenium.ChromeDriverを変数宣言すると、使用できるようになります。
Selenium.ChromeDriverで便利なメソッド一覧
Get | URL指定してブラウザ起動 |
---|---|
Close | ブラウザを閉じる |
Actions | Click,DoubleClick,Sendkey他アクション設定 |
FindElementByClass | Class名で要素を検索 |
FindElementById | Id名で要素を検索 |
TakeScreenshot | スクリーンショット |
Selenium.ChromeDriverを使えば、指定したURL内の必要な情報だけを取得してExcelシートに設定することが自動化できます。
サンプルコードを置いておきます。
とある1ページ内に画像が20ずつ公開されているサイトから、画像タイトルを抜き出してセルに自動入力していくプログラムです。
Sub btn_click() Dim driver As New Selenium.ChromeDriver Dim strValue As String Dim intCnt As Integer Dim intDataCnt As Integer Dim intimgCnt As Integer intDataCnt = Worksheets("sheet1").Range("A1").End(xlDown).Row For intCnt = 2 To intDataCnt driver.Get Worksheets("sheet1").Cells(intCnt, 7) for intimgCnt = 0 to 19 strValue = driver.FindElementByXPath("//*[@id="mainList"]/li[intimgCnt]/a/span").Text Worksheets("sheet1").Cells(intCnt, intimgCnt).Value = strValue Next Next driver.Close Set driver = Nothing End Sub
Webスクレイピング利用時の注意点
Webスクレイピングを使って、天気や株価、商品情報などを収集している方がいますね。
APIやサイトによっては、スクレイピングを禁止してたりしますし、あまりにも大量のデータや繰り返し行うと、IPブロックされてしまったりボット認定で拒否される可能性もあるので、万能ではないことを心得ながら利用してみてください。
最悪、異形業務妨害で逮捕されて20日間も拘留された例もあるんですよね…警察の無知ゆえの事件だったように思いますが。
>>マスコミ報道だけでは分からない岡崎図書館事件
データ解析ではPythonが主流かもしれませんが、ちょっとしたデータ収集であれば、日ごろ使い慣れたVBAでさっと作ってしまった方が時短できるかもしれません。
あくまでも、個人的で常識の範囲で使用しましょうね。相手のサーバーに負荷を掛け過ぎないよう気を付けましょう。