Selenium VBA Excel チュートリアル: Chrome Web スクレイピングの例

Seleniumを使用したデータスクレイピングとは何ですか?

Selenium は、Google Chrome を利用して Web スクレイピングを実行するために、HTML Web ページからの情報のスクレイピングを容易にする自動化ツールとして分類できます。

Selenium を使用してデータ スクレイピングを実行する前に Excel マクロを準備するにはどうすればよいですか?

Excel でのデータ スクレイピングのプロセスに入る前に、Excel マクロ ファイルに対して実行する必要がある特定の前提条件があります。

これらの前提条件は次のとおりです。 –

ステップ1) Excel ベースのマクロを開き、Excel の開発者向けオプションにアクセスします。

データスクレイピングを実行する前にExcelマクロを準備する

ステップ2) [開発者] リボンで [Visual Basic] オプションを選択します。

データスクレイピングを実行する前にExcelマクロを準備する

ステップ3) 新しいモジュールを挿入します。

データスクレイピングを実行する前にExcelマクロを準備する

ステップ4) 新しいサブルーチンを初期化し、test2 という名前を付けます。

Sub test2()
End sub

Following モジュール内の結果は次のようになります。 –

データスクレイピングを実行する前にExcelマクロを準備する

ステップ5) ツール タブの参照オプションにアクセスし、Selenium タイプ ライブラリを参照します。 次のことwing ライブラリは、Google Chrome を開くのに役立ち、マクロ スクリプトの開発を容易にするため、モジュールを参照する必要があります。

データスクレイピングを実行する前にExcelマクロを準備する

これで、Excel ファイルを Internet Explorer と対話できるようになりました。 次のステップは、HTML でのデータ スクレイピングを容易にするマクロ スクリプトを組み込むことです。

VBA を使用して Google Chrome を開くにはどうすればよいですか?

VBAを使用してGoogle Chromeを開く手順は次のとおりです。

ステップ1) 以下に示すように、サブルーチン内の変数を宣言して初期化します。

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer

ステップ2) Selenium と VBA を使用して Google Chrome を開くには、driver.start "chrome" と記述して、キーを押します。 F5.

次のことwing コードになります。

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Application.Wait Now+Timevalue("00:00:20")
End sub

モジュールは次のようになります。 –

VBA を使用して Google Chrome を開く

VBAを使用してGoogle ChromeでWebサイトを開くにはどうすればよいですか?

VBA を使用して Google Chrome にアクセスできるようになったら、次のステップは VBA を使用した Web サイトへのアクセスを組み込むことです。これは、URL を次のように渡す必要がある get 関数によって容易になります。 double 属性内の引用符。

フォローしてくださいwing 表示されている手順

モジュールは次のようになります。 –

VBA を使用して Google Chrome でウェブサイトを開く

F5 を押してマクロを実行します。

次のことwing Webページは表示どおりGoogle Chromeで開かれます

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Driver.get "http://demo.guru99.com/test/web-table-element.php"
Application.Wait Now+Timevalue("00:00:20")
End sub

VBA を使用して Google Chrome でウェブサイトを開く

これで、スクレイピング タスクを実行するための Excel マクロの準備が整いました。 次のステップでは、Selenium と VBA を適用して情報を抽出する方法を示します。

VBAを使用してWebサイトから情報をスクレイピングするにはどうすればよいですか?

デイトレーダーが Web サイトのデータに毎日アクセスしたいとします。 デイトレーダーがボタンをクリックするたびに、市場データが自動的に Excel に取り込まれます。

上記の Web サイトから、要素を検査し、データがどのように構造化されているかを観察する必要があります。 Ctrl + Shift + I を押して、以下の HTML ソース コードにアクセスします。

<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>

ソースコードは次のようになります。 –

見てわかるように、データは単一の HTML テーブルとして構造化されています。 したがって、HTML テーブルからデータ全体を取得するには、HTML テーブルのヘッダー情報とテーブルに関連付けられた対応するデータを取得するマクロを設計する必要があります。 次の手順を実行しますwing 表示されるタスク: –

ステップ1) HTML ヘッダー情報をコレクションとして実行する for ループを作成します。 Selenium ドライバーは、HTML テーブルのヘッダー情報を検索する必要があります。 これを行うには、FindElementByClass() メソッドと FindElementByTag() メソッドを利用して、表示されているタスクを実行します。

VBA モジュールは次のようになります。 –

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get "http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th

ステップ2) 次に、Selenium ドライバーは、前述のように、同様のアプローチを使用してテーブル データを見つけます。 次のことを書かなければなりませんwing コード: –

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

vba モジュールは次のようになります。 –

Excel は、Excel シートの Range 属性または Excel シートの Cells 属性を使用して初期化できます。 コムを減らすにはplexVBA スクリプトにより、コレクション データはワークブックに存在するシート 2 の Excel セル属性に初期化されます。 さらに、text 属性は、HTML タグの下に配置されたテキスト情報を取得するのに役立ちます。

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

vba モジュールは次のようになります。 –

VBAを使用してWebサイトから情報をスクレイピングする

ステップ3) マクロスクリプトの準備ができたら、Excelボタンにサブルーチンを渡して割り当て、VBAのモジュールを終了します。 ボタンに「更新」または初期化できる適切な名前を付けます。 この例では、ボタンは更新として初期化されます。

VBAを使用してWebサイトから情報をスクレイピングする

ステップ4) 更新ボタンを押すと、以下の出力が表示されます。

VBAを使用してWebサイトから情報をスクレイピングする

ステップ5) Excel の結果と Google Chrome の結果を比較します。

VBAを使用してWebサイトから情報をスクレイピングする

まとめ

  • Selenium は、Google Chrome を利用して Web スクレイピングを実行するために、HTML Web ページからの情報のスクレイピングを容易にする自動化ツールとして分類できます。
  • インターネット上でのスクレイピングは慎重に実行する必要があります。
  • 情報をかき出すことは通常、ウェブサイトの規約に違反します。
  • Selenium を介してスクレイピングが行われる場合、複数のブラウザーのサポートが提供されます。
  • 換言すれば、 scraper 同様のスクレイピングタスクを実行できます Firefox、インターネットエクスプローラーでも同様です。