ワークフローでループクリックアクションが作成されている場合、デフォルトではOctoparseは各個別のリンクを新しいタブでロードします。つまり、リスト内の各リンクをクリックして開く際にも、リストページが表示されているタブは失われません。しかし、特定のケースでは、新しいページが現在のタブに直接ロードされる場合があります。この場合、Octoparseは2番目のリストアイテムをロードできず、元のリストページにアクセスできなくなります。その結果、ループクリックアクションはリスト内の最初のアイテムのみをクリックし、他のアイテムに進むことができません。
ループが正常に動作しているかどうかはどのように確認できますか?
ワークフローでアクションを手動でクリックしてループアイテムが正しく動作しているか確認できます。
リストページが読み込まれた後、「ループアイテム」をクリックします。
「アイテムをクリック」をクリックし、新しいページが読み込まれるのを待ちます。
再び「ループアイテム」をクリックし、Octoparseがリストページを表示するかどうかを確認します。
リストページが表示される場合、Octoparseはリストページに戻ることができ、ループが正常に動作していることを意味します。それ以外の場合は、ワークフローを修正する必要があります。以下に、自分で試すことができるいくつかの修正方法を示します。
1. 新しいタブで詳細ページを開く
新しいタブでリンクを開くことをサポートするウェブサイトの場合、新しいページをクリックする「アイテムをクリック」の設定に移動します。「新しいタブで開く」がチェックされているかどうかを確認します。チェックされていない場合は、オプションにチェックを入れることで問題を解決できます。
2. 「戻る」ボタンを追加する
「新しいタブで開く」を選択しても「ループアイテム」が正しく機能しない場合、新しいページが新しいタブにロードできない可能性があります。
この場合、新しいページがロードされるとリストページが上書きされるため、Octoparseはリストページに戻ることができません。
これを解決するために、リストページに戻るためのボタンを探します。以下の例では、「保険」ボタンになります。このようなボタンがある場合、"Insurance"ボタンを使用してクリックアクションを設定します。これにより、Octoparseは新しいページでのデータスクレイピングが完了した後、"Insurance"ボタンをクリックして元のリストに戻り、リスト内の他のアイテムをループします。
「金融・保険」ボタンをクリックします。
操作提案パネルで「選択したリンクをクリックする」を選択します。
ページの変更に十分な時間を確保するために、AJAXタイムアウトを調整します。
ワークフローは以下のようになるはずです:
3. 「Webページを開く」を追加する
「新しいタブで開く」が選択されており、「戻る」ボタンが利用できない場合でも、Octoparseが元のリストページに戻るために、「Webページを開く」アクションを手動で追加することもできます。
ワークフロー上でカーソルを合わせ、最後の「Loop Item」のステップとして「Open Page」ステップを追加します。このアクションは、Octoparseが現在のアイテムページのスクレイピングを終了するたびにリストページを再度開きます。ただし、このトリックは複数のページにまたがるリストをスクレイピングしている場合にはうまく機能しない可能性があります。
「Webページを開く」アクションをワークフローに追加します。
リストページのURLをコピーして貼り付けます。
4. タスクを2つに分割する
最後に、リストの長さや新しいタブでページが読み込まれない理由に関係なく、常にタスクを2つに分割してみることができます。1つはリストアイテムに埋め込まれたURLを取得するためのものであり、もう1つはそれぞれのURLから特定の情報を抽出するために設定されたタスクです。この方法はもっと信頼性があり、タブ間を行き来する必要がないため、スクレイピングプロセスも非常に効率的です。
さらにスクレイピングプロセスを自動化するために、機能「別のタスクからURLをインポートする」を使用してタスクを一緒に実行するように関連付けることもできます。