VBAを使ったWebスクレイピング

データスクレイピングとは何ですか?

データ スクレイピングは、HTML Web ページからローカル マシンに存在するローカル ファイルに必要な情報を抽出するのに役立つ技術です。通常、ローカル ファイルは Excel ファイル、Word ファイル、またはその他のファイルに対応します。 Microsoft オフィスアプリケーション。これは、Web ページから重要な情報を伝達するのに役立ちます。

研究ベースのプロジェクトに日常的に取り組んでいる場合、データのスクレイピングは簡単になりますが、そのようなプロジェクトは純粋にインターネットと Web サイトに依存しています。 このトピックについてさらに詳しく説明するために、VBA を使用して金融 Web サイトから市場情報を Excel シートに取り込むための Excel マクロを実行するデイトレーダーの例を考えてみましょう。

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

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

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

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

Internet Explorer を使用してデータ スクレイピングを実行する前に Excel マクロを準備する

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

Internet Explorer を使用してデータ スクレイピングを実行する前に Excel マクロを準備する

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

Internet Explorer を使用してデータ スクレイピングを実行する前に Excel マクロを準備する

ステップ4) 新しいサブルーチンを初期化する

Sub test()
End sub

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

Internet Explorer を使用してデータ スクレイピングを実行する前に Excel マクロを準備する

ステップ5) ツールタブの下の参照オプションにアクセスして参照します。 Microsoft HTMLオブジェクトライブラリと Microsoft インターネット制御。

次のファイルは、インターネット エクスプローラーの起動やマクロ スクリプトの開発を容易にするため、モジュールに参照されます。

Internet Explorer を使用してデータ スクレイピングを実行する前に Excel マクロを準備する

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

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

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

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument

ステップ2) VBA を使用して Internet Explorer を開くには、次のように書きます。 つまり、表示=true を押し F5。

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument
Ie.visible=true

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

Excel VBA を使用して Internet Explorer を開く

Excel VBA を使用して Internet Explorer を開く

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

VBA を使用して Internet Explorer で Web サイトを開く手順は次のとおりです。

ステップ1) Excel VBA を使用してインターネット エクスプローラーにアクセスできるようになったら、次のステップでは VBA を使用して Web サイトにアクセスします。これは Navigate Attribute によって実現されます。この属性では URL を二重引用符で囲んで渡す必要があります。表示される手順に従ってください。

Sub test()
Dim, ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate"https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

ステップ2) - F5キーを押してマクロを実行します。次のWebページが開きます。

VBA を使用して Internet Explorer で Web サイトを開く

これで、スクレイピング機能を実行するための Excel マクロの準備が整いました。 次のステップでは、VBA を使用して Internet Explorer から情報を抽出する方法が表示されます。

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

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

上記の Web サイトから、要素を検査し、データがどのように構造化されているかを観察する必要があります。

ステップ1) Ctrl + キーを押して、以下の HTML ソース コードにアクセスします。 Shift + I

<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>

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

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate "https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document

見てわかるように、データは単一の HTML テーブルとして構造化されています。 したがって、HTML テーブルからデータ全体を取得するには、データをコレクションの形式で収集するマクロを設計する必要があります。

コレクションは Excel に貼り付けられます。 望ましい結果を達成するには、以下の手順を実行します。 –

ステップ2) サブルーチンでHTMLドキュメントを初期化します。

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

ステップ3) HTMLドキュメント内に存在するコレクション要素を初期化します。

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

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate "https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

ステップ4) 次のように、ネストされたループを使用して Excel シートのセルを初期化します。

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

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object

ie.Visible = True
ie.navigate "https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

Excel は、Excel シートの range 属性または Excel シートの cells 属性を使用して初期化できます。VBA スクリプトの複雑さを軽減するために、コレクション データはワークブックにあるシート 1 の Excel cells 属性に初期化されます。

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

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

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

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

ステップ6) Excel の結果と Internet Explorer の結果を比較します。

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

まとめ

  • データスクレイピングにより、ユーザーは必要な情報だけをかき出すことができます。 この目的に最適なツールを見つけるには、さまざまな Web サイトから必要な情報を効率的に抽出するのに役立つ Web スクレイピング ツールのリストをご覧ください。
  • スクレイピングはInternet Explorerを使用して実行できます。
  • Internet Explorer の場合、スクレイピングのプロセスは遅くなります。 ただし、ユーザーに望ましい結果が提供されます。
  • スクレイピングに使用されているシステムに損傷を与えたり、クラッシュさせたりする可能性があるため、スクレイピングは細心の注意を払って実行する必要があります。