XPath クエリ基礎(HtmlAgilityPack)
1. XPathとは
XPath(XML Path Language)は、XMLやHTML文書内のノード(要素・属性・テキストなど)をパス構文で指定して検索する言語です。HtmlAgilityPackはHTMLを内部的にXMLライクな構造として扱うため、XPathを使って効率よくノードを探索・抽出できます。
2. 基本的な構文例
以下はXPathの基本構文です。
| XPath 式 | 説明 |
|---|---|
/html/body/div |
html直下のbody内のdiv要素を取得 |
//div |
文書中のすべてのdiv要素を取得 |
//a[@href] |
href属性を持つすべてのa要素を取得 |
//p[@class='intro'] |
class属性がintroのp要素を取得 |
//ul/li[1] |
ul内の最初のli要素を取得 |
//table/tr/td[text()='価格'] |
テキストが「価格」のtd要素を取得 |
3. HtmlAgilityPackでのXPath使用例
4. XPath使用時の注意点
-
HTMLが不正な構文でも、HtmlAgilityPackは自動補正を試みるため、XPathが思わぬノードを指すことがあります。
-
空の要素や属性名の大文字・小文字の違いに注意が必要です(HTMLは大文字小文字を区別しないが、XPathでは区別されます)。
-
ノードが存在しないときは
nullが返されるので、Nullチェックを行うことが重要です。
5. 補足:属性値の部分一致
XPathでは関数も利用可能です。
まとめ
HtmlAgilityPackではXPathを使うことで、HTML文書から特定の要素や属性を効率的に抽出できます。XPathの基礎構文を理解しておくことで、複雑なHTML構造にも柔軟に対応したスクレイピングやデータ抽出が可能になります。
ChatGPT4o 生成日:2025/06/23