1. Web クローラーと XPath の関係とは?
Web クローラー(Web Scraper)は、Web上のページを自動的に巡回し、データを収集するプログラムです。
その際、収集対象の HTML から「どの要素を取得するか」を指定する方法として、XPath が使われます。
2. XPath の役割
XPath は、HTML / XML 内の要素・属性・テキストを正確に特定する言語です。
クローラーは XPath を使って:
タイトル
価格
リンク
画像
など必要な部分だけを抽出できます。
例(商品名を取る):
//div[@class='product-name']/text()
3. なぜ XPath がクローラーで重要なのか?
HTML 構造が複雑でも狙った要素にピンポイントでアクセスできる
CSS セレクタより柔軟な条件指定ができる
テキスト内容、属性値、位置、部分一致など高度な抽出が可能
Scrapy / Octoparse / Puppeteer など幅広いツールで標準採用
4. よく使う XPath 基本構文(Web向け)
構文 | 意味 | 例 |
| 文書全体から検索 |
|
| 現在のノード |
|
| 属性を選択 |
|
| テキストを取得 |
|
| 部分一致検索 |
|
5. よく使う XPath 関数(Web クローラーで必須)
text()
ノードのテキストを取得
//h1/text()
contains()
部分一致検索
HTML はクラスが複数なので重宝する
//a[contains(@class,'active')]
starts-with()
//h1[starts-with(text(),'Page')]
normalize-space()
余分な空白を削除(実務で最重要)
//div[normalize-space(text())='ログイン']
6. XPath の実例(HTML 版)
サンプル HTML:
<ul>
<li class="item fruit">Apple</li>
<li class="item">Banana</li>
<li class="item fruit">Orange</li>
</ul>
① 「item を含む li すべて」:
//li[contains(@class,'item')]
② 「text が 'Apple' の li」:
//li[text()='Apple']
③ 「fruit を含む li のテキストを取得」:
//li[contains(@class,'fruit')]/text()
7. XML を例にした基本 XPath の書き方
<books>
<book id="1">
<title>Harry Potter</title>
</book>
</books>
id=1 の title を取得する XPath:
/books/book[@id='1']/title
8. XPathを書くには
要素のソースコードを確認してから:
① Chrome DevTools で目的の要素を右クリック
→ 「検証」
→ Elements パネルで該当ノードを表示
② Ctrl + F で検索バーを開く
③ XPath を入力する
→ マッチした要素がハイライトされる
→ 0/1/2 と一致数が表示されるので検証が簡単
続きを読む
