スクレイピングを使って業務を効率化しよう

それって自動化できるって知ってますか?

意外と使えるけど、使われていないスクレイピングについて

スクレイピングという言葉は知ってますか。スクレイピングは、プログラムを利用してウェブページのHTML構造を解析し、特定の情報(例:商品価格、記事のタイトル、画像など)をプログラムで自動的に取得することを指します。最近人気のPythonというプログラム言語で利用している方が多いように思います。

どういったケースで利用するかというと、例えば、ある商品の価格がネット上でいくらぐらいか知りたいとします。あなたはどこのネットショップでその商品が取り扱われているかを調べます。
次に、取り扱われているネットショップがわかったら、毎日決まった時間にそれぞれのネットショップを訪問し、価格のチェックを行います。
その価格をデータベースに入れてリスト化して、あなたのWEBサイトに来た人に、どこのネットショップで買うと安く購入できるか情報提供します。

ここで考えてください。
毎日決まったネットショップ、決まった商品の価格をチェックするという部分は定型作業です。つまり、型にはまった作業なので、プログラムが得意としている分野です。

そこでスクレイピングの出番です。
スクレイピングでは、ブラウザを使って行うことができることは基本すべてできるということを覚えておいてください。先ほどの例でいうと、ネットショップを訪問する、商品を表示する、価格を見る、これらはすべてブラウザで行えます。
スクレイピングではブラウザでページを表示し、ページの中身を取得する。そして取得した情報を使っているプログラム言語で、データベースなどに格納します。

また、スプレイピングはPhthonだけでなく、多くの方が使っているEXCELの中にあるVBAなどの機能、さらにはVBScriptなどでも利用できます。

スプレイピングを利用するには

スクレイピングをするには、seleniumを使うのが一般的です。(もちろん使わなくてもやる方法はあります。)
seleniumのダウンロードはこちらからできます。selenium

seleniumの考え方

基本的にseleniumはブラウザを操作するためのものです。
下記はわかりやすいようにEXCELが使える環境だと試せるのでVBAの場合を例にしています。
VBAからSeleniumを使うには、Selenium WebDriverをVBAから操作できるようにセットアップする必要があります。

ここでは、VBAとSeleniumを連携させて簡単なブラウザ操作を実行するサンプルを紹介します。具体的には、Excel VBAからGoogle Chromeを開き、Googleで特定のキーワードを検索するという例です。

手順:
VBAからSeleniumを利用する準備
Selenium WebDriverのセットアップ:

まず、Selenium WebDriverとChromeDriverをダウンロードする必要があります。
Seleniumの公式サイト からSelenium WebDriverをダウンロードします。
ChromeDriver をダウンロードし、システムのパスが通っている場所に配置します。
Selenium Type LibraryをVBAに追加:

Selenium Type Libraryを使用するために、VBAで必要な参照を追加します。
Excelを開き、Alt + F11でVBAエディタを開きます。
ツール -> 参照設定を選択し、Selenium Type Libraryを追加します。

ここまで設定が完了するといよいよEXCELのVBAからseleniumを利用できます。
下記はVBAを使ってSeleniumでChromeブラウザを操作し、Google検索を行う簡単なサンプルを示します。


Sub SeleniumGoogleSearch()
    ' Selenium WebDriverの初期設定
    Dim driver As New WebDriver
    Dim searchBox As WebElement
    
    ' ChromeDriverのパスを指定して、Chromeブラウザを起動
    driver.Start "chrome", "https://www.google.com"
    driver.Get "/"
    
    ' Googleの検索ボックスを取得して、キーワードを入力
    Set searchBox = driver.FindElementByName("q")
    searchBox.SendKeys "VBA Selenium サンプル"
    
    ' 検索を実行
    searchBox.SendKeys Keys.Enter
    
    ' 結果が表示されるまで少し待機
    Application.Wait Now + TimeValue("0:00:05")
    
    ' ブラウザを閉じる
    driver.Quit
End Sub


上記コードの流れです。

(1)WebDriverの初期化:
Dim driver As New WebDriver でWebDriverを初期化します。このオブジェクトを使ってブラウザを操作します。

(2)Chromeを起動:
driver.Start "chrome", "https://www.google.com" でGoogle Chromeブラウザを起動し、https://www.google.comにアクセスします。

(3)検索ボックスを見つけてキーワードを入力:
driver.FindElementByName("q") でGoogleの検索ボックス(name属性が"q")を取得し、searchBox.SendKeys "VBA Selenium サンプル" で検索キーワードを入力します。

(4)Enterキーで検索を実行:
searchBox.SendKeys Keys.Enter でEnterキーを送信し、検索を実行します。

(5)結果が表示されるまで待機:
Application.Wait を使って検索結果が表示されるまで少し待機します(この部分は状況に応じて調整します)。

(6)ブラウザを閉じる:
最後に、driver.Quit でブラウザを閉じます。

いかがでしょうか。
想像以上に簡単にブラウザを操作することができたと思います。
次回は、実際にseleniumを使って、WEBページ上の値を取得する方法を記載させていただきます。
引き続きよろしくお願いいたします。
皆さんの参考になれば幸いです。

おすすめの記事