Excel VBAを使用してウェブサイトから画像・ビデオリンクを抽出する方法

この記事では、Excel VBAを用いてウェブサイトから画像やビデオリンクを抽出する手法について詳細に解説します。具体的なコード、その詳細解説、さらには実践的な応用例を通じて、VBAの凄さと活用法を学んでいきましょう。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

Excel VBAを使用してのウェブスクレイピング基本

Excel VBAを用いてウェブサイトから情報を抽出することをウェブスクレイピングといいます。今回は、特に画像やビデオのリンクを取得する方法に焦点を当てて解説します。

VBAでのウェブスクレイピングの基本手順

1. InternetExplorerを操作するためのオブジェクトを作成
2. 対象のウェブページを開く
3. 必要な情報を抽出
4. 抽出した情報をExcelシートに出力

基本のコード例


Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
' ウェブページを開く
IE.Navigate "https://example.com"
' ページが読み込まれるまで待つ
Do While IE.Busy Or IE.readyState <> 4
    DoEvents
Loop
' 画像のリンクを抽出
Dim imgElements As Object
Set imgElements = IE.document.getElementsByTagName("img")
For Each imgElement In imgElements
    ' 抽出した画像リンクをExcelに出力
    ThisWorkbook.Worksheets("Sheet1").Cells(Row, 1).Value = imgElement.src
    Row = Row + 1
Next imgElement
' InternetExplorerを閉じる
IE.Quit
Set IE = Nothing

コードの詳細解説

このコードは、InternetExplorerを背後で起動して指定したウェブページから画像のリンクを抽出し、それをExcelに出力するものです。

– InternetExplorer.Application: InternetExplorerを操作するためのオブジェクトを作成します。
– IE.Navigate: 対象となるURLのページを開きます。
– getElementsByTagName(“img”): “img”タグの情報をすべて取得します。
– imgElement.src: 画像のリンク情報を取得します。

注意点

ウェブスクレイピングは、サイトの利用規約や著作権法に抵触しないよう注意が必要です。対象となるサイトの利用規約を必ず確認してください。

応用例

応用1: ビデオリンクの抽出


Dim videoElements As Object
Set videoElements = IE.document.getElementsByTagName("video")

For Each videoElement In videoElements
    ' 抽出したビデオリンクをExcelに出力
    ThisWorkbook.Worksheets("Sheet1").Cells(Row, 1).Value = videoElement.src
    Row = Row + 1
Next videoElement

このコードは、上述の基本的なコードに加えて、ビデオリンクも抽出できるようにしたものです。

応用2: 特定のクラス名を持つ画像のみを抽出


Dim targetImgElements As Object
Set targetImgElements = IE.document.getElementsByClassName("targetClass")

For Each targetImgElement In targetImgElements
    ' 抽出した画像リンクをExcelに出力
    ThisWorkbook.Worksheets("Sheet1").Cells(Row, 1).Value = targetImgElement.src
    Row = Row + 1
Next targetImgElement

このコードは、クラス名”targetClass”を持つ画像のみを抽出します。

応用3: リンクテキストを含むaタグからのリンク抽出


Dim aElements As Object, aElement As Object
Set aElements = IE.document.getElementsByTagName("a")

For Each aElement In aElements
    If InStr(aElement.innerText, "動画") > 0 Then
        ' リンクテキストに"動画"を含むaタグのリンクをExcelに出力
        ThisWorkbook.Worksheets("Sheet1").Cells(Row, 1).Value = aElement.href
        Row = Row + 1
    End If
Next aElement

このコードは、リンクテキストに”動画”という文字を含むaタグからリンク情報を抽出します。

まとめ

Excel VBAを使用してウェブサイトからの情報抽出は、非常に便利であり、さまざまな情報の取得やデータ分析に役立ちます。ただし、ウェブスクレイピングは、サイトの利用規約や著作権に注意しながら行うことが大切です。今回学んだ知識を基に、より高度なスクレイピング技術を磨いていきましょう。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次