VBAを使ったWebスクレイピング
データスクレイピングとは何ですか?
データスクレイピングは、HTML webページからローカルマシンに存在するローカルファイルに必要な情報を抽出するのに役立つ技術です。 通常、ローカルファイルは、excelファイル、wordファイル、または任意のMicrosoft officeアプリケーションに対応することができます。 これは、webページからの重要な情報をチャネリングに役立ちます。
日常的に研究ベースのプロジェクトに取り組んでいるときにデータスクレイピングが簡単になり、そのようなプロジェクトは純粋にインターネットやウ このトピックをさらに説明するために、VBAを使用して金融webサイトから市場情報をexcelシートに取り込むためのexcelマクロを実行するデイトレーダーの例を見てみましょう。
このチュートリアルでは、次のことを学びます:
- データスクレイピングとは何ですか?
- Internet explorerを使用してデータスクレイピングを実行する前にExcelマクロを準備する方法は?
- Excel VBAを使用してInternet Explorerを開くにはどうすればよいですか?
- VBAを使用してInternet explorerでWebサイトを開く方法は?
- VBAを使用してウェブサイトから情報をスクレイピングする方法は?
Internet explorerを使用してデータスクレイピングを実行する前にExcelマクロを準備する方法は?
excelでデータスクレイピングのプロセスに入る前に、excelマクロファイルで実行する必要がある特定の前提条件があります。
これらの前提条件は次のとおりです。–
ステップ1)Excelベースのマクロを開き、excelの開発者オプションにアクセスします。
ステップ2)開発者リボンの下のVisual Basicオプションを選択します。
ステップ3)新しいモジュールを挿入します。
ステップ4)新しいサブルーチン
Sub test()End sub
を初期化すると、モジュールの結果は次のようになります: –
ステップ5)ツールタブの下の参照オプションにアクセスし、Microsoft HTMLオブジェクトライブラリとMicrosoft internet controlを参照します。
以下のファイルは、internet explorerを開くのに役立ち、マクロスクリプトの開発を容易にするため、モジュールを参照します。
これで、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を開くには、次のように記述します。 visible=trueを押し、F5を押します。
Sub test()Dim ie As New InternetExplorer Dim doc As New HTMLDocumentIe.visible=true
モジュールは次のようになります: –
VBAを使用してInternet explorerでWebサイトを開くにはどうすればよいですか?
ここでは、VBAを使用してInternet exploerでWebサイトを開く手順があります
ステップ1)Excel VBAを使用してinternet explorerにアクセスできるようになったら、次のステッ これはNavigate属性によって促進され、URLは属性内で二重引用符として渡す必要があります。 表示されているように、次の手順に従います。
Sub test()Dim, ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate"http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETE
ステップ2)-f5を押してマクロを実行します。 次のwebページが表示されたとおりに開きます
これで、スクレイピング機能の実行に関してexcelマクロの準備が整いました。 次の手順では、VBAを使用してinternet explorerから情報を抽出する方法が表示されます。
VBAを使用してウェブサイトから情報をスクレイピングする方法は?
デイトレーダーが毎日ウェブサイトからデータにアクセスしたいとします。 デイトレーダーがボタンをクリックするたびに、それは自動的にexcelに市場データをプルする必要があります。
上記のウェブサイトから、要素を検査し、データがどのように構造化されているかを観察する必要があります。
ステップ1)control+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>
ソースコードは次のようになります: –
Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.document
データは単一のHTMLテーブルとして構造化されていることがわかります。 したがって、htmlテーブルからデータ全体をプルするためには、コレクションの形でデータを収集するマクロの設計が必要です。
コレクションはexcelに貼り付けられます。 目的の結果を達成するには、以下の手順を実行します。-
ステップ2)サブルーチンでHtmlドキュメントを初期化します
VBAモジュールは次のようになります:-
ステップ3)HTMLドキュメントに存在するコレクション要素を初期化する
VBAモジュールは次のようになります: –
Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")
ステップ4)次のようにネストされたループの助けを借りてexcelシートセルを初期化します
VBAモジュールは次のようになります: –
Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")
excelは、excelシートのrange属性を使用して初期化するか、excelシートのcells属性を使用して初期化できます。 VBAスクリプトの複雑さを軽減するために、コレクションデータはブックに存在するシート1のexcelセル属性に初期化されます。
マクロスクリプトの準備ができたら、サブルーチンをexcelボタンに渡して割り当て、VBAのモジュールを終了します。 ボタンにrefreshまたは初期化可能な適切な名前としてラベルを付けます。 この例では、ボタンは更新として初期化されます。
ステップ5)更新ボタンを押して、以下の出力を取得します
ステップ6)excelの結果とinternet explorerの結果を比較する
まとめ:
- データスクレイピングは、ユーザーが望む情報のみをスクレイピングすることを可能にする。
- スクレイピングはinternet explorerを使用して行うことができます。
- internet explorerの場合、スクレイピングのプロセスは遅くなりますが、ユーザーに望ましい結果を提供します。
- スクレイピングは、スクレイピングに利用されているシステムに害を与え、クラッシュする可能性があるため、絶対的な慎重さと注意を払って行