Webスクレイピングの基本!要素の属性とXPathの調べ方

Excel
この記事は約4分で読めます。

VBAでWebブラウザ操作を自動化するにあたって、基本的なことをまとめました。

今回は、Webページ内の要素を操作するときに必要な、要素の情報を調べる方法です。Webスクレイピングが初めての方にシンプルにお伝えできればと思います。

 

Webページ内の要素を操作する方法

VBAで行うWebブラウザ操作で、操作したい要素(ボタンやテキストボックス等)の名前やIDを指定して、操作の命令を出します。

例えば、ボタンをクリックする操作を命令したいときは、ボタン要素の名前やIDを指定してクリックを命令します。

要素の名前やIDなどを指定しなければ、WebDriverWebページのどの要素を操作したら良いかわかりません。

 

WebDriverとは、ブラウザに直接操作の命令を出すツールのことです。

 

 

Webページの構成

Webページは「HTML」という言語によって作成されています。HTMLで文章やボタン等を「タグ」と呼ばれる文字列を使い配置することでWebページは作られます。

タグは例えば、以下のように書かれています。

<a href=”リンク先URL”>テキスト</a>

 aが要素で、hrefが属性です。属性は要素に情報を付加するときに使用します。

 この要素ごとに設定された属性を指定することで、Webスクレイピングを行うことができます。

属性の値の調べ方は以下の手順で行います。

 

属性の調べ方

 要素の情報を調べたいWebページで、「F12」を押して開発者ツールを開きます。

例としてGoogleChromeの検索画面でやってみます。

[F12]を押すと、[開発者ツール]が開きます。

[</>要素]タブを表示させた状態で、赤枠のアイコンをクリックします。

このアイコンをクリックしたあと、画面上の要素をクリックすると、HTML内での実装部分を教えてくれます。

 

 

検索ワードを入力する、テキストボックスをクリックします。

</>要素」タブでは、クリックしたテキストボックスの要素部分がグレー背景で強調されます。

以下の<textarea>タグで囲まれた範囲が、検索ワードを入力テキストボックスの実装部分だとわかりました。赤枠のname属性が“q”であることが確認できます。

 

他にも、id属性は[APjFqb]だということが分かります。VBA等でのWebブラウザ操作を要素に対して命令する場合、要素にname属性がない場合は、id属性を指定しても良いです。

 

 

XPathの調べ方

属性のほかに、XPathを指定してもWebブラウザ操作の命令を行えます。XPathXML Path Language)は特定の要素を指定するための言語です。

 

XPathの確認方法は以下です。

先ほど確認した検索ワードのテキストボックスのエリアで、右クリックします。

 [コピー][完全なXPathのコピー]をクリックします。

これで要素に対するXPathが取得できました。

 

まとめ

このように、Webページ内の要素の情報を指定することで、VBAやRPAからWebブラウザ操作の命令を行うことができます。

 

VBAを使用したWebブラウザ操作自動化について、以下に詳しく書いたので見てみてくださいね!

VBAとSeleniumBasicライブラリでブラウザ操作自動化!

VBAでSeleniumを使わずにEdgeブラウザ操作する
VBAでEdgeブラウザを操作したいけど、環境整えるのにハードル高くて、ライブラリもインストールできない!VBAだけで何とかならないか!?と思って調査しました。 Webスクレイピングの基本についての記事もありますので、まずはそちらをチェック...

VBAでSeleniumを使わずにEdgeブラウザ操作する

VBAでSeleniumを使わずにEdgeブラウザ操作する
VBAでEdgeブラウザを操作したいけど、環境整えるのにハードル高くて、ライブラリもインストールできない!VBAだけで何とかならないか!?と思って調査しました。 Webスクレイピングの基本についての記事もありますので、まずはそちらをチェック...

 

Webスクレイピングの基本について、別の記事もありますのでそちらもチェックしておくことをおすすめします。

Webスクレイピングの基本!HTTP通信について

Webスクレイピングの基本!HTTP通信について
VBAでWebブラウザ操作を自動化するにあたって、基本的なことをまとめました。 VBAでのWebスクレイピングは初めてだったので、改めて基本的なことを学習したので、Webスクレイピングが初めての方にシンプルにお伝えできればと思います。 We...