条件判断によるスクレイピング

Sunday, April 08, 2018 10:32 AM
すべてのページが同じではないので、 Webページに変化が出た場合、条件分岐を使ってスクレイピングします。
以下は処理手順です:
web scraping with octoparse - extract with branch judgement
質問:条件分岐をいつ使うべきですか?

答え:条件分岐には、主な状況が2つあります。
1) 「New」、「人気商品」、「セール中」など、特定のタグを持つページからのデータを取得する場合
2) ページ上のデータが異なる形で表示されている場合

下の画像では、セール中のパソコンに関する情報が必要です。商品の詳細ページを見ると、セールアイコンを判断条件としてテストできます:商品ページに要素がある場合は、商品情報を取得します。 そうでなければ、スキップします。

web scraping with octoparse - extract with branch judgement


その手順を見てみましょう!

1) リストにある各商品をクリックする用のループを作ります。(チュートリアルを参照)
2) 分岐判断を使ってページに存在するかどうかをテストします。
  • 右上にあるボタンを使ってワークフローモードに切り替えます。
  • 分岐判断アクションをループの内に追加します。

web scraping with octoparse - extract with branch judgement

  • 左側のブランチをクリックし、「Execute branch when: When the current page contains element」を選択します。
  • 「Element XPath」(XPathの検索方法)のテキストボックスにXPath要素:.//div[@class='pb-savings'] を入力します。
  • 「Save」をクリックします。
  • 右側のブランチをクリックし、「Do not judge. Always execute the branch」を選択します。
  • 「Save」をクリックします。

web scraping with octoparse - extract with branch judgement 


ヒント!

Octoparseでは、次の条件に設定できます。
  • Do not judge. Always execute the branch - このオプションを選択すると、Octoparseは何も判断せず、すぐにブランチ内のアクションを実行します。このオプションは、右側のブランチのみに選択してください。
  • Execute branch when current page contains text - このオプション選択すると、Octoparseは現在のページに指定テキストを探します。
  • Execute branch when current page contains element - このオプション選択すると、Octoparseは現在のページに指定要素(入力したXPathに従って)を探します。
  • Execute branch when current loop item contains text - このオプション選択すると、Octoparseは現在のループアイテムに指定テキストを探します。
  • Execute branch when current loop item contains element - このオプション選択すると、Octoparseは現在のループアイテムに指定要素(入力したXPathに従って)を探します。

3) 商品の詳細ページ(要素があるループから1つを選択)で、取得したいデータフィールドをクリックします。必要に応じてフィールドの名前を変更します。

web scraping with octoparse - extract with branch judgement

 

4) Extract Data」アクションを左のブランチに追加します。

web scraping with octoparse - extract with branch judgement

 

これで、ページ上の要素を探すように設定しました。要素があれば、データをスクレイピングし、それ以外はスキップします。

web scraping with octoparse - extract with branch judgement


ヒント!
  • 「要素がページに存在するかどうか」を条件として設定すれば、指定要素がページに唯一でなければなりません。そうでなければ、判断が無効になるかもしれません。
  •  Octoparseはデフォルトで左から右に判断します。テストしたい条件を左側のブランチ内に入れることが重要です。左のブランチの条件が「Do not judge」場合、Octoparseは右のブランチに進まず、「Do not judge」は常に「True」と判断されます。
  • 条件が満たされていないときに抽出アクションが必要ない場合は、ブランチを空白にすることができます。
  • データ抽出アクションが両方のブランチに追加されているときは、データフィールドの数と名前を同じにしてください。
  • 繰り込み分岐判定を使って、テストをさらに洗練させられます。

 

 

btn_sidebar_use.png