このタイトルの意味がわかりづらいなら、以下の例を見てみましょう!
各地域にはたくさんの都道府県があります。もし、都道府県を抽出する時、所属の地域も抽出したい場合、相対XPathの出番です。
以下は抽出したサンプルです。
XPathはユーザーにとって難しいですが、うまく使えれば、スクレイピングは簡単になります。
例としてこのWebサイトを使います。
このページを一見すると、2つのループアイテムで解決することを思いつくかもしれません。
一番目のループでは、地域とその地域に含む都道府県を取得し、2番目のループでは各都道府県の情報を抽出します。
試したところ、上手く抽出できません。
Octoparseは同じページ上の2つのループを検出できないため、2番目のループの値は地域に応じて変化しません。そこで、相対XPathを使います。それでは、抽出する方法を紹介します。
まず、すべての都道府県を取得するループアイテムを作成し、地域と対応する都道府県の位置関係を使用して、地域の値を取得するXPathを記述できます。
ループアイテム(都道府県)のXPathに基づく:
//UL[@id='link-color']/LI/DIV[2]/UL[1]/LI
地域に一致するXPathを記述できます。
//UL[@id='link-color']/LI/DIV[2]/UL[1]/LI/../../../div[1]
相対XPathは、ループアイテムXpathに相対するXPathのマッチングの追加部分です。
/../../../div[1]
ループアイテムのXPathが地域のXPathの一部であることを確認してください。これは、相対XPathとマッチするXPathを接続するための重要なものです。
まずは、ループアイテムのXPathを//UL[@id='link-color']/LI/DIV[2]/UL[1]/LIに変更します。
そうすると、ページからフィールドを追加し、相対XPathを入力すれば、地域データが取得されます。
相対XPathを入力する方法を次に示します。
実行すると、データがきれいに取得されます。