前回は最も使われるXPath書き方を紹介しまして、今回では、より正しくデータを指定するため、XPathによく使われる関数をご紹介します。
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要素であるため、次のように書きます。
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の構文・関数をより多く了解するには、Xpath cheatsheetをご覧ください。