XPath は、XML・HTML ドキュメントから特定のノード(要素・属性・テキスト)を選択するためのパス言語です。
WebスクレイピングではHTMLから必要な情報を抽出するために最も重要な技術の1つです。
1. XPath の基本構造
XPath 式は、
パス式(/、//など)
条件式([] 内の比較 / 関数)
を組み合わせて構成されます。
例:
//div[@class='item']/span/text()
2. XPath の主要構文
2.1 パス式
記述 | 意味 |
| ルートから選択 |
| 文書全体から該当ノードを検索 |
| 現在ノード |
| 親ノード |
例:
//books/book/title
2.2 比較・論理演算子
種類 | 例 | 意味 |
比較 |
| 数値・文字比較 |
論理 |
| 条件を組み合わせ |
例:
//student[age > 20 and name='John']
2.3 位置関数
関数 | 例 | 意味 |
|
| 最初の要素 |
|
| 最後の要素 |
例:
//book[position()=last()]
2.4 テキスト・属性の抽出
目的 | 例 |
テキスト |
|
属性 |
|
3. よく使う Web スクレイピング向け XPath 関数
3.1 text()
//h1/text()
3.2 contains():部分一致検索
HTMLではclass名が複数になるため最重要。
例:
<div class="product item highlight">
//div[contains(@class,'product')]
3.3 starts-with()
//h1[starts-with(text(),'Page')]
3.4 normalize-space():余分な空白を除去
//div[normalize-space(text())='ログイン']
4. 実用例(HTML ベース)
特定の文字列を含む
<li>を取得
//li[contains(text(),'an')]
特定 class の記事タイトル
//article[contains(@class,'post')]//h2/text()
href 属性を取得
//a[contains(@class,'next')]/@href
これらの関数を組み合わせて使用することで、Webスクレイピングにおいて必要なデータを正確に抽出することができます。
