XPath基礎編 - 3.演算子と関数
フォローするXPath式は、通常、1つまたは複数のパス式から構成されます。パス式は、XMLドキュメントをトラバースし、ノードを選択するために使用されます。また、比較演算子、算術演算子、論理演算子、および関数を使用して、XPath式を構築することができます。
演算子
-
比較演算子:
/books/book[year > 1950]
この式は、1950より大きい
year
要素の値を持つすべてのbook
要素を選択します。 -
算術演算子:
/books/book[position()=last()]
この式は、文書内の最後の
book
要素を選択します。 -
論理演算子:
/books/book[author='J.D. Salinger' and year=1951]
この式は、著者がJ.D. Salingerで、年が1951年の
book
要素を選択します。 -
パス式:
/books/book/title
この式は、すべての
book
要素の下にあるtitle
要素を選択します。 -
関数:
count(/books/book)
この式は、ドキュメント内の
book
要素の数を返します。
XPathの構文は非常に柔軟であり、さまざまな演算子、関数、およびパス式の組み合わせを使用して、ノードを選択するための様々な要件を満たすことができます。以下は、いくつかの一般的な演算子です。
=
:等しい!=
:等しくない<
:より小さい>
:より大きい<=
:以下>=
:以上and
:論理積or
:論理和not
:否定
例えば、以下のXMLドキュメントがあるとします。
<students>
<student>
<name>John</name>
<age>20</age>
</student>
<student>
<name>Jane</name>
<age>18</age>
</student>
<student>
<name>Bob</name>
<age>22</age>
</student>
</students>
以下のXPath式は、年齢が20歳の学生を選択します。
/students/student[age=20]
また、以下のXPath式は、名前が"John"であるか、年齢が20歳未満の学生を選択します。
/students/student[name='John' or age<20]
このように、演算子を使用することで、より複雑な選択条件を指定することができます。
関数
XPath関数は、XPath言語において非常に重要な機能の1つであり、Webスクレイピングにおいてデータを正確に抽出するために欠かせないものです。
XPath関数には多数の種類があり、その中でも最も一般的なものは「text()」、「contains()」、「starts-with()」などです。これらの関数は、HTMLドキュメント内の要素や属性を抽出するために使用されます。
例えば、「text()」関数は、HTML要素内のテキストを抽出するのに役立ちます。次の例では、XPathを使用して「h1」要素のテキストを抽出しています。
<h1>Hello World</h1>
XPath式: //h1/text()
結果: "Hello World"
また、「contains()」関数は、特定の文字列を含む要素を抽出するために使用されます。次の例では、XPathを使用してリスト内のすべての項目を抽出しています。
<ul>
<li>Apple</li>
<li>Banana</li>
<li>Orange</li>
<li>Pineapple</li>
</ul>
XPath式: //li[contains(text(),'an')]
結果: "Apple"、"Banana"、"Pineapple"
「starts-with()」関数は、指定した文字列で始まる要素を抽出するために使用されます。次の例では、XPathを使用して「h1」要素を抽出しています。
<h1>Page Title</h1>
XPath式: //h1[starts-with(text(),'Page')]
結果: "Page Title"
これらの関数を組み合わせて使用することで、Webスクレイピングにおいて必要なデータを正確に抽出することができます。