Ajax読み込み
一週間前以上前にアップデートされました

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

図書館で本を探すシーンを想像してみてください。従来の方法では、本棚から本を1冊ずつ取り出し、目的の本を探し出すまでそのプロセスを続けます。しかし、この過程は時間がかかるばかりでなく、効率的ではありません。

ここでAjax(エイジャックス)の原理が登場します。Ajaxのページめくりの機能を利用すると、情報の探し方が劇的に変わります。これは、図書館で本を探しているときに、移動することなく、司書が次々と新しい本を手渡してくれる状況に似ています。あなたがすることは、その場で新しい本を受け取るだけです。

同様に、ウェブページで情報を探す場合にも、Ajaxは非常に有用です。ページの下端にスクロールすると、新しいデータを読み込む必要がある場合、Ajaxは自動的にサーバーにリクエストを送り、新しいデータを取得し、ページに表示します。この際、ページ全体をリフレッシュする必要がないため、現在のページを離れることなくさらに多くの内容を閲覧することができます。まるで図書館で立ち止まったまま、さらに多くの本を見つけ出す感覚です。

つまり、Ajax(エイジャックス)のページめくりやデータの読み込み機能は、情報探索をスムーズで効率的にします。これは、図書館で本を探す経験と非常に似ています。

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

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


ページ遷移の検証

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

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

ページの動作の観察

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


これらの観察と検証を通じて、ウェブページがAjaxを使用しているか、あるいは通常のページ遷移を行っているかを判断することが可能となります。

スクレイピングでなぜAJAXの扱いが必要ありますか?

Webデータをスクレイピングしている間、Octoparseは、「アイテムをクリックする」や「次のページをクリックする」などのアクションを実行する信号として再読み込みを行います。 AJAXを使っているWebページでは、リロードせずに新しいコンテンツを更新します。再読み込みがないので、Octoparseは動作の信号を受信できず、最後のステップで停止します。ですから、データの抽出ができなくなったり、予想より少ないデータが得られる可能性があります。

そのため、AJAXを使ってWebページからデータをスクレイピングする場合は、Octoparseが順調に行うようにAJAXタイムアウトを設定する必要があります。例えば、「次のページをクリックする」ステップにAJAXタイムアウトを2秒に設定すると、Octoparseは2秒間待機してアクションを実行します。この場合、Octoparseはリロード信号を待つ必要はありません。

OctoparseにおけるAJAXの処理方法

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

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

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

AJAX自動検出

ページでAJAXが使用されている場合、Octoparseは自動でAJAXタイムアウトを設定します。

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

もし長いか短いタイムアウトが必要な場合は、単にドロップダウンメニューをクリックして、自分が好きな期間を選択します。

手動設定

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

注意

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

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

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

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