
データを収集するために、サイトのWebスクレイピングを試みる方は多くいます。
しかし、Webスクレイピングを試みようとすると、プログラミングの専門用語に出会います。
「XPath」とは、そんなプログラミング用語の一つです。Webスクレイピングをしてデータ分析をするなら、プログラミングをしない方でも最低限の用語は知っておかなければいけません。
そこで今回は、「XPath」について分かりやすく解説します。これから、Webスクレイピングを試みる初心者の方はぜひ参考にしてください。
XPathは要素や属性を指定して情報を取得するための言語
XPathとは、データを収集する際に要素や属性を指定して、情報を取得するための言語です。
Webスクレイピングは、不要な情報を削って必要な情報を手に入れることを指します。
単に他サイトの情報を寄せ集めるだけでは、情報が多すぎて扱いが難しくなります。また、情報過多で分析にも適しません。
要素や属性をXPathで指定すれば、不必要な情報を削り、必要な情報だけを拾うことができます。
XPathはXMLでもHTMLでも使用可能
インターネット上のWebサイトは、HTMLやXML等のマークアップ言語で書かれています。
Webスクレイピングをできるツールによっては、HTMLとXML両方に対応していないものもあります。
XPathはどちらの場合でも使用可能なので、汎用性のある言語だと言えます。
「class」や「ID」等は1つのページにも同じ要素がある可能性があるのに対し、XPassは1つのページにつき1つの要素のみを指定します。
XPassは以下のように取得することが可能です。
- 「検証」(F12キー)
- XPassを取得したい箇所を選択
- 右クリック「コピー」
- 「XPassをコピー」

XPathの指定方法を解説
ここからは具体的なXPathの指定方法を解説します。
XPathで指定すれば必要な情報だけを厳選できるので、データ分析も容易です。今回は解説のために弊社のブログを例にしています。
HTMLやCSSの要素を確認したい場合は、確認したいページで「ctrl+u」のボタンを押します。
また、複雑なコード内でも「ctrl+f」を押して検索窓に検索したい要素を挿入すれば、知りたい情報にすぐに辿り着けます。
ロケーションパスでツリー構造から特定要素を指定
XPathはロケーションパスでツリー構造から特定要素を指定することができます。
読者を意識しているサイトは、読みやすくしているためツリー構造もきちんと整備されています。
そのため、ロケーションパスを「/」で要素を繋げていけば、取得したい部分に到達します。
たとえば、記事タイトル(HTMLでは「h1」と表現される)を取得したい場合は、「/html/body/h1」と指定します。
※ロケーションパス…文書上の特定位置を指定する際のXPassでの表し方
具体的な例で解説するために、弊社のブログ記事
「Webスクレイピングでできることって何?取得データの活用方法を分かりやすく解説」
のHTMLを紹介します。
すべての言語を紹介すると複雑になるため、不要な部分は省略しています。
<body>
中間部省略
<h1>スクレイピングでできることって何?取得データの活用方法を分かりやすく解説</h1>
これだけで、ブログのタイトル情報をすぐに入手できます。実際は「<body>」部分から「<h1>」に至るまで、長い言語があります。しかし、XPathによって中間部分をすべて省略可能です。
ブログのタイトルを収集することで、消費者が求めているキーワードの傾向を把握できます。
XPathでは属性を「@」で表現する
ECサイトから「販売価格」やサイズや個数などの細かい商品情報を取得したい場合もあります。そういった情報は、HTML上「class」で表現されています。XPathを使用する場合、「@」として指定すると「class」の情報もすべて抽出できます。たとえば、以下のように指定します。
「/html/body/div/span[@class=’price’]」
弊社の「スクレイピング代行サービス」から値段を抽出すると以下の通りです。
<h3 id=”service-feature”>料金</h3>
<p class=”has-text-align-center price”>単発:<span style=”color:#cf2e2e” class=”tadv-color”>10万円</span><span style=”color:#000000″ class=”tadv-color”>~<br></span>継続:初期費用<span style=”color:#cf2e2e” class=”tadv-color”>5万円</span>~</p>
単発の案件で10万円、継続の場合の初期費用が5万円という情報が手に入ります。
文字列が含まれる画像要素の取得は「contains」と指定
Webサイトには、写真や絵、グラフや表などの画像情報も多分に含まれています。場合によっては、こういった画像情報もデータとして収集して分析する必要があります。
画像情報もXPathで指定して、文字列も含んで収集することが可能です。
画像情報はHTML上では、「image」と表現されています。
サイト内の「image」情報をする場合のロケーションパスは「//img[contains(@class, ‘image’)]」と書きます。
たとえば、商品の画像上に料金のような文字情報があれば、「text()」と「contains」を組み合わせて指定すればよいのです。
「//div[contains(text(),`料金`)]」とすると、料金まで抽出できます。
<div class=”item>
<h1>スクレイピング代行料金</h1>
<div class=”price”>単発料金:10万円<div>
サービスや商品の紹介は、画像とともに値段が表示されていることもあります。ECサイトなどの料金情報を知りたい場合は、この方法も用いましょう。
テキストを取得したい場合は「text()」
情報収集は数字データや画像情報だけではありません。テキスト(文字情報)も重要なデータです。
XPathを使用してテキスト(文字情報)を取得したい場合は、「text()」と記入します。
サイト上の記事は、タイトルと見出し、本文で書かれています。
HTMLでは、「h1」がタイトル・「h2~h6」までが見出しです。他のテキスト(文字情報)は、Sサイズで書かれています。
そして、HTML上では「p」タグで囲われているため、XPathでは「//p/text()」と指定します。
たとえば、以下の通りです。
<p><span style=”font-weight: 400;”><br>より多くの人にサイトを見てもらうためには決して欠かせない<strong>「SEO対策」</strong>。<br>SEO対策においては「対策キーワードの選定」が大いに重要となりますが、どのようにキーワードを選定すればいいかお悩みの方も多くいらっしゃいます。<br><strong>そんな時に便利なのがスクレイピング</strong>です。SEOで成功している競合サイトをスクレイピングすれば、その競合が注力しているキーワードが明らかになります。<br>注力しているキーワード=高い効果が見込めるキーワードと考えられますので、スクレイピングを行えば、競合サイトが、どのキーワードでSEO対策を行えば効果的かを教えてくれるというわけです。<br><br>また、競合が注力しているキーワード以外にも、</span></p>
「<p></p>」で囲われているテキスト部分、つまりこちらで引用したSサイズの文字はすべて抽出できます。
要素の位置を指定する場合は「position」と指定
Webサイトから情報を抽出する場合、特定の位置や場所を指定したい場合もあるでしょう。
XPathでは、サイトの位置や場所からも抽出したい情報を指定できます。
たとえば、箇条書き(li)内の3番目の位置のノードを抽出したい場合は、「//li[position()=3」と書きます。
たとえば、先ほどの弊社の記事に戻ると、導入部で記事内容の箇条書きが提示されていて読者にわかりやすいように工夫されています。
HTMLだと以下の通りです。
すべての言語を紹介すると複雑になるため、不要な部分は省略しています。
<div class=”box_2line”>
<ul>
<li>スクレイピングでできること</li>
<li>スクレイピングを最大限活用するためのポイント</li>
<li>まとめ</li>
</ul>
</div>
「//li[position()=3」と入力すれば、記事の「まとめ」部分だけを収集できます。
ブログ記事の内容を網羅的に知りたい場合は、「まとめ」部分だけをXPathで指定して収集しましょう。
▼下記のブログでは実際のWebスクレイピングの手順を、コードも公開しながら紹介しています。より詳しいWebスクレイピングのやり方を知りたい方はこちらも参考にしてみてください。
XPathを使用したスクレイピングの問題点
XPathを使用したWebスクレイピングは、専門のプログラマーの方ではなくても使用可能です。
ただし、便利なXPathにも問題点はあります。
特に問題なのは、スクレイピングに時間がかかってしまう点です。
社内の人材に任せると、情報収集にだけ集中してしまって情報をどのように経営に活用していくか忘れてしまいがちです。しかし、Webスクレイピングで大事なのは、情報収集をした後にどのように会社の施策に活用するかということです。Webスクレイピングもデータ分析をして、活用しなければ意味をなしません。
Webスクレイピングに困ったら専門の会社に依頼する
XPathを使用したWebスクレイピングに時間がかかり活用するのが難しい場合は、専門の会社に依頼する方法もあります。
Webスクレイピングは、社内で専門の部署や人材を募らなければいけません。会社内の人材でWebスクレイピングをするための投資が難しい場合は、専門の会社に依頼すると分析に必要なデータだけを抽出して納品してくれます。
そのため、Webスクレイピングにかける時間と支出を無くして、会社の目的に合わせたデータ分析に集中できます。
まとめ
データ分析を経営で活用するためには、データ収集をする段階を踏まなければいけません。Webスクレイピングをおこなう際には、サイト全体の情報を取得するよりは取得したい情報を指定した方が分析がしやすいです。Webスクレイピングを効率よくおこなうためには、XPathが便利です。
しかし、XPathを使用するためには、他のプログラミング言語もある程度知っておかなければいけません。ただし、WebスクレイピングはXPathを使用しても、手間や時間がかかってしまうものです。Webスクレイピングに時間をかけすぎてしまうと、肝心なデータ分析に集中できません。
Webスクレイピングを専門の会社に依頼して、データ分析と新規企画の作成に集中するとよいでしょう。