超簡単!vb.net+SeleniumBasicを使ってchromeにてスクレイピング(自動化)させる

Seleniumにはいくつか種類があり、それぞれ特徴があり使い勝手が違うのですが、
その中で特に直感的に、わかりやすく使いやすいと思われる SeleniumBasicをインストールし、実際にVisual StudioからSeleniumBasicを使ってWeb自動操作をして、情報を取得するまでの手順をまとめてみました。

これから作ろうとしているもの

以下の動作をするコンソールアプリを作成したいと思います

  1. Chromeブラウザを機動
  2. Yahoo JAPAN!の検索窓に「Selenium」と入力
  3. 「検索」ボタンを押下
  4. 検索結果を取得
  5. コンソール画面に取得結果を表示

環境

事前準備

SeleniumBasicとVisualStudioが必要です。
SeleniumBasicのインストールが済んでいない場合、以下のURLからダウンロードしてインストール

Seleniumbasic
Seleniumbasic : A Selenium based browser automation framework for VB.Net, VBA and VBScript

インストール方法は以下のエントリからも確認できます。

SeleniumBasicをインストールしてExcelから使うまでのチュートリアル(スクレイピングサンプルプログラム付き)

SeleniumBasicを最新のChromeに対応させるためChrome Driverを更新

SeleniumBasicに含まれるChromeDriverはは古いため、最新のChromeでは動作しません。
Chrome Driverを別途ダウンロードしてきてSeleniumbasicをインストールした場所にコピーする必要があります。

最新のChromeに対応したChrome Driverをダウンロード

ダウンロードは以下のURLから

ChromeDriver - WebDriver for Chrome
WebDriver for Chrome

ダウンロードしたchromedriver_win32.zipは展開しておきます。

コピー先

エクスプローラーのアドレスバーに以下の文字をコピー&ペーストしてフォルダを開きます。
そこへ、chromedriver_win32.zipを展開して得られた chromedrive.exeをコピーします。

%LOCALAPPDATA%\SeleniumBasic
image

Yahoo! Japanよりキーワード検索し、検索結果をスクレイピングするプログラムの作成

ここからは実際にVlusual Studio上でプログラムを作成していきます。

Micrtosoft Visual Studioで新しいプロジェクトを作成

Visual Basic –  コンソールアプリ(.NET Framework)を選択

image

プロジェクトの設定

ソリューションエクスプローラーの参照をクリックして参照を追加する

image
image

SeleniumBasicをインストールしたフォルダの Selenium.dll を参照設定する

image

以下のファイルをソリューション エクスプローラーの ConsoleApp4 にドラッグ&ドロップする

image

この辺りに上記ファイルをドラッグ&ドロップする

image

chromedriver.exe がプロジェクトフォルダ配下にコピーされました。

image

ここまでの作業が正しくできていれば以下のような表示になっているはずなので、chromedriver.exeのプロパティを設定します

image

プロパティウィンドウでビルド時に出力ディレクトリにコピーされるように設定する

image

Module1.vb に以下のプログラムを入力

Imports Selenium

Module Module1

    Sub Main()
        Dim Driver As New Selenium.ChromeDriver

        With Driver
            .Start()
            .Get("https://www.yahoo.co.jp/")
            .FindElementByCss("#srchtxt").SendKeys("Selenium")
            .FindElementByCss("#srchbtn").Click()

            For Each elmLoop As WebElement In .FindElementsByCss("#WS2m > div > div.hd > h3 ")
                Console.WriteLine(elmLoop.Text)
                Console.WriteLine(vbTab & .elmLoop.FindElementByTag("a").Attribute("href"))
                Console.WriteLine()
            Next

            Console.ReadLine()

            .Quit()

        End With

    End Sub

End Module

実行結果

image

Chromeの実行画面を表示させたくない場合

Chromeの実行画面を非表示(ヘッドレス動作)させたい場合は以下のエントリ参照

Selenium BasicでヘッドレスChromeを使う方法

コメント

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