前回は最も使われるXPath書き方を紹介して、今回では、より正しくデータを指定するには、XPathによく使う関数を紹介します。
目次1. contains() :特定の文字列が含まれる要素を指定する2. position():特定位置の要素を指定する3. and/not/or:複数の条件が含まれている要素を指定する |
1. contains() :特定の文字列が含まれる要素を指定する
contains() は通常、属性値またはテキストに含まれる文字列ををあいまい検索することに使われます。
- contains(@class,"XXX") :属性値に特定の文字列が含まれている要素を指定する
例えば、このHTMLからclass属性にRedがつくものをすべて取得したい場合、次のように書きます。
//span[contains(@class,“Red”)]
つまり、このXPathは、classにRedを含むspan要素を取得するという意味になります。
- contains(text(),"XXX") :テキストに特定の文字列が含まれる要素を指定する
例えば、このHTMLから『Rowling』という文字を含んでいる要素を指定したい場合は、次のように書きます。
//span[contains(text(),"Rowling")]
ヒント! ページ送りボタンを指定する場合はよく『contains(text(),"次へ")』 を使います。 ページ送りボタンを指定するXPathの書き方についてはこちら➡ ページ送りボタンを指定するXPathの書き方 |
2. position():特定位置の要素を指定する
前回の記事では、[] (スクウェアブラケット)で数値を囲むと、順番の要素を取得できることを紹介しました。positionでもN番目の要素を指定することもできます。
- position()=
例えば、上記のHTMLで『商品3』は4番目のth要素であるため、次のように書きます。
//tbody/th[4]
position()=を使うと、次のように書きます。
//tbody/th[position()=4]
-
position() >
『広告』以外の要素を取得する場合、『広告』は1番目のth要素であるため、次のように書きます。
//tbody/th[position()>1]
3. and/not/or:複数の条件が含まれている要素を指定する
複数の条件が同時に含まれている要素を指定したい場合はand/not/or関数を使います。
- and ー 複数の条件に一致する要素を指定する
このHTMLから、『S_20』と『pdf』を含むhrefを取得したい場合は、次のように書きます。
//a[contains(@href,“S_20”) and contains(@href,“pdf”)]
- not ー 特定条件を含まない要素を指定する
このHTMLからhttps://helpcenter.octoparse.jp/hc/ja/xpath/S_10.html以外の@hrefを取得したい場合は、次のように書きます。
//a[not(contains(@href, "S_10"))]
- or ー いずれかの条件に一致する要素を指定する
このHTMLから、MかLを含むhrefを取得したい場合は、次のように書きます。
//a[contains(@href,”M_”) or contains(@href,”L_”)]
また、MかL以外のhrefを取得したい場合は、notとorを組み合わせると、次のように書きます。
//a[not(contains(@href,”M_”) or contains(@href,”L_”))]
以上はXPathによく使う関数です。もしXPathの構文・関数をより多く了解するには、この記事をご覧ください。
関連記事: