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

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