メインコンテンツにスキップ

XPath基礎編 - 3.演算子と関数

今週アップデートされました

XPath は、XML・HTML ドキュメントから特定のノード(要素・属性・テキスト)を選択するためのパス言語です。
WebスクレイピングではHTMLから必要な情報を抽出するために最も重要な技術の1つです。


1. XPath の基本構造

XPath 式は、

  • パス式(/、//など)

  • 条件式([] 内の比較 / 関数)
    を組み合わせて構成されます。

例:

//div[@class='item']/span/text()

2. XPath の主要構文

2.1 パス式

記述

意味

/

ルートから選択

//

文書全体から該当ノードを検索

.

現在ノード

..

親ノード

例:

//books/book/title

2.2 比較・論理演算子

種類

意味

比較

= != < > <= >=

数値・文字比較

論理

and or not()

条件を組み合わせ

例:

//student[age > 20 and name='John']

2.3 位置関数

関数

意味

position()

[position()=1]

最初の要素

last()

[position()=last()]

最後の要素

例:

//book[position()=last()]

2.4 テキスト・属性の抽出

目的

テキスト

//h1/text()

属性

//*[@id='main']/@href


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スクレイピングにおいて必要なデータを正確に抽出することができます。

こちらの回答で解決しましたか?