どうしてOctoparseは最後のページをスクレイピングし続けて止まらないのですか?
フォローする多くの場合、取得するデータは複数のページにあるので、ページネーションを使って複数のページからデータを抽出するのは非常に一般的なケースです。
しかし、Octoparseは最後のページをスクレイピングし続けて止まらないことがあります。これは、最後のページで 「次へ」ボタンがまだ検出されて、ページネーションの無限ループによって引き起こされる可能性があります。 ここでは、この問題を解決するには2つのソリューションがあります。ページネーションループアイテムの「高級オプション」の下に「ループ終了時」条件を設定するか、XPathを変更して無限ループを防止します。
1. ループ終了条件を設定する - 「ループ終了時」
「ループ終了時」オプションを使用すると、特定のページでのページネーションを停止できます。ページネーションステップの 「ループ終了時」条件を設定すると、ページネーション実行が設定された時点で停止します。
(たとえば、最初の50ページのデータをスクレイピングする場合は、実行回数を49に設定できます)。
したがって、ページクリックの回数を分かれば、「ループ終了時」オプションを設定して問題を完全に解決できます。
まずページネーションループを選択し、「ループ終了時」ドロップダウンメニューを開きます。「実行が次の回数に達する」をクリックし、ループの実行回数として数字を選択し、「OK」をクリックして設定を保存します。
2. XPathを変更する
ループ終了条件を設定しても問題を解決できない場合は、ページネーションループのXPathを変更する必要があります。
ここでは、例を使ってXPathの変更によってループを終了する方法を示します。
次の2つのスクリーンショットでは、最初のページと最後のページにFirebugプラグインによって自動生成されたXPathによって「次へ」ボタンが配置されていることがわかります。
(FirefoxブラウザでFirebugプラグインを使うことをお勧めします。Firebugは旧バージョンのFirebox(バージョン54など)でしか使用できません。ここ をクリックして古いバージョンのFireboxを入手してください。)
最初のページ:
最後のページ:
最初のページの "a"タグの下の "class"属性は、最後のページとは異なります。 1つは「gspr next」で、もう1つは「gspr next-d」です。
ここでは、この機能を使って、新しいXPath作成して「次へ」ボタンを探して、「次へ」ボタンが最後のページで使えないことを確認します。
したがって、新しいXPathは://a[@class='gspr next'] です。
新しいXPathをFirebugに貼り付けて、最初のページと最後のページの両方に「次へ」ボタンがあるかどうかを確認します。
最初のページ:
最後のページ:
XPathの変更について詳しく知りたい場合は、XPathチュートリアルをご覧ください:
http://jp.octoparse.com/tutorial/xpath/
From: https://www.octoparse.jp/tutorial/keep-scraping-the-last-page-and-never-stop/