メインコンテンツにスキップ

Ajax読み込み

1年以上前に更新

Ajax(エイジャックス)読み込みとは?

Ajax(Asynchronous JavaScript and XML)は、ウェブページをリフレッシュせずにサーバーからデータを取得し、ページの一部を更新する技術です。これにより、ユーザーはページ全体を再読み込みすることなく、新しい情報やコンテンツを閲覧できます。

例えば、ウェブページの下端までスクロールすると、新しいデータを読み込む必要がある場合、Ajaxは自動的にサーバーにリクエストを送り、新しいデータを取得してページに表示します。これにより、ユーザーは現在のページを離れることなく、さらに多くの内容を閲覧できます。

Ajaxを使用しているかを判断する方法

ウェブページがAjax(エイジャックス)を利用しているか、通常のページ遷移を行っているかを判断するには、主に3つの方法があります。

  • ページ遷移の検証

通常のページ遷移では、新しいページに移るたびに元のページは完全にリロードされ、ブラウザのURLも変わります。しかし、Ajaxを使用している場合は、新しいコンテンツが追加されても元のページはリロードされず、ブラウザのURLも変わらないことが特徴です。

ウェブブラウザの開発者ツールを使ってページの「ネットワーク」を確認することで、Ajaxリクエストの有無を確認できます。具体的には、Ajaxを使用している場合、ネットワークタブに新しいデータを読み込むためのAjaxリクエストが表示されます。

  • ページの動作の観察

Ajaxを用いているウェブページでは、ページの一部だけが更新される特性があります。たとえば、商品リストがAjaxで読み込まれているウェブページでは、商品リスト部分だけが更新され、他の部分は変更されずに表示される状態が続きます。

以上の観察と検証の方法を通じて、ウェブページがAjaxを使用しているか、あるいは通常のページ遷移を行っているかを判断することが可能です。

OctoparseにおけるAJAXの処理方法

Octoparseは、要素をクリックした際にページの再読み込みをシグナルとして次のアクションを実行します。要素をクリックするとページが再ロードされた場合は、ロード完了後に次のアクションが実行されます。しかし、AJAXを使用するページの場合はページが再ロードされなかったら、Octoparseはアクションを実行するシグナルを受け取れずに動作が停止してしまいます。

そこで、「アイテムをクリック」や「次のページをクリック」のアクションにAJAXタイムアウトを設定し、タイムアウト時に次のアクションへ移行する必要があります。

しかし、AJAXタイムアウトを適切に設定する必要があります。例えば、「さらに読み込みをクリック」ステップでAJAXタイムアウトを2秒に短く設定すると、Octoparseは2秒の間にページがロードできなかった場合、データの抽出ができないまま、強制的に次のステップへ移動してしまうので、そのタイムアウト時間をページロード状況に応じて適切に設定しましょう。

OctoparseにはAJAXを処理する2つの方法があります。

  • AJAX自動検出

ページでAJAXが使用されている場合、Octoparseは自動でAJAXタイムアウトを設定します。例えば、AmazonはAJAXを使用して次のページを読み込みます。次のページボタンをクリックするアクションは、自動でAJAXタイムアウトが設定されます。

タイムアウトを設定する際に、ドロップダウンメニューをクリックして、自分が好きな期間を選択します。

  • 手動設定

タスクが手動で作成された場合やOctoparseがAJAXを検出できなかった場合でも、手動で設定することが可能です。「アイテムをクリック」や「次のページをクリック」のステップをクリックし、詳細設定で「AJAX読み込む」にチェックを入れ、希望するタイムアウトを選択します。

注意

  • Ajax のタイムアウト時間を最大の30秒に設定することをお勧めします。この時間内にロードが完了した場合、次のステップには30秒より前に進むことになります。
    タイムアウト時間や待機時間はどのように決めれば良い?

  • AJAXでない場合、AJAXタイムアウトを設定しないこと

    再読み込みの必要があるページをスクレイピングするとき、AJAXタイムアウトを設定しないでください。Octoparseは設定したAJAXタイムアウトによってページの再読み込みを停止し、ページの読み込みが不完全になる可能性があります。Webページが完全に読み込まれない場合、データの抽出やステップの実行に問題が起こるかもしれません。

こちらの回答で解決しましたか?