どうしてOctoparseは最後のページをスクレイピングし続けて止まらないのですか?

2019年08月23日

多くの場合、取得するデータは複数のページにあるので、ページネーションを使って複数のページからデータを抽出するのは非常に一般的なケースです。

しかし、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チュートリアルをご覧ください。

 

 

 

 

btn_sidebar_use.png
btn_sidebar_form.png