このページの概要
Webスクレイピングをするとき、Webページ上に配置されたボタンを押したり、テキストボックスに値を入力したり、テキストを取得したりすとき、必ず操作の対象となる要素(Element)を指定する必要があります。このページでは要素を特定するための「XPath」という文字列をGoogleChrome(以下chrome)で取得する方法を説明します。
XPathの使いどころ
要素を指定する手段として「XPath」は最もおすすめの方法です。これひとつ覚えておけばスクレイピングで要素を指定することに困ることがありません。しかもchromeの機能を使うとXPathの記述ルールを覚える必要がなく、chromeで要素を指定するだけで簡単に操作対象要素のXPathを取得することができます。
操作対象のページをchromeで開く
このページの解説では操作対象の例として当サイトのトップページにある関数リファレンスを使用します(https://funcref.com/)。
「検証」画面を開きます
開き方は2つあります。Webシステムでは右クリック禁止という場合もありますが、基本どちらかで検証画面を開くことはできるかと思います。
①「右クリック」⇒「検証」
②「Ctrl」+「Shift」+「I」
開くと下記のような画面になります。ウインドウの幅によって見た目が違うことはあると思いますが、ページ右側に「検証」画面が表示されます。
要素(Element)選択モードにします
下記ボタンをクリックし表示が青くなっていれば要素選択モードになっています。ショートカットキー「Ctrl」+「Shift」+「C」でもモード変更可能です。赤枠部分が青くなります。
調べたい要素をクリックする
上記ボタンが青くなっている状態のまま、サイトの任意の場所をクリックします。このページの解説では、見出しの「ExcelVBA(マクロ)関数リファレンス・・」をクリックしました。すると「検証」画面の表示が変化し、クリックした場所を示すHTMLの該当箇所が青背景で強調表示されます。
強調された部分で右クリックし要素をコピーする
青背景になった部分で右クリックし「Copy」⇒「Copy XPath」もしくは「Copy full XPath」をクリックします。検証画面が日本語で表示されている場合もありますが、位置関係は同じですので、迷わずできるかと思います。
【結果】XPathの文字列がクリップボードにコピーされました
サンプルの通り実行すると以下の情報がクリップボードにコピーされます(2024年9月20日時点の状態)。「Copy XPath」で取得できるXPathと「Copy full XPath」で取得できるXPathとのどちらもスクレイピングの要素特定に使えます。動的に生成されて毎回「id」の部分が変わってしまうページでは「Copy full XPath」を使用し、他特段こだわりなければ通常の「Copy XPath」を使うという切り分けで問題ありません。また、XPathは文字列で指定をするためExcelVBA(マクロ)上で指定する場合、少し手を加える必要があります。
'■「Copy XPath」
' //*[@id="post-5"]/div/h2
' 文法考慮 ⇒ "//*[@id=""post-5""]/div/h2"
'■「Copy full XPath」
' /html/body/div[1]/div[2]/div/main/article/div/h2
業務用PCでスクレイピングするなら「LesserScraping」
業務用PCでExcelVBA(マクロ)からWebスクレイピングをしようとすると「Selenium Basic」の導入でつまずく方は多いです。当サイトでは劣化版Selenium Basicと呼べる「Lesser Scraping」を開発し無償で公開しています。
Comment