AJAX /データの動的ロードがあるWebページをスクレイプするための最良の方法は何ですか?
例:読み込み時に20枚の画像を表示するウェブページをスクレイピングしますが、ユーザーがページを下にスクロールすると、さらに多くの画像が読み込まれます(Facebookのようなもの)。このような場合、最初の20枚だけでなく、すべての画像をどのようにスクレイプしますか?
AJAX /データの動的ロードがあるWebページをスクレイプするための最良の方法は何ですか?
例:読み込み時に20枚の画像を表示するウェブページをスクレイピングしますが、ユーザーがページを下にスクロールすると、さらに多くの画像が読み込まれます(Facebookのようなもの)。このような場合、最初の20枚だけでなく、すべての画像をどのようにスクレイプしますか?
FiddlerやWireSharkなどのツールを使用して、さらにアイテムをロードするときに実行されるWebリクエストを検査します。
次に、コードでリクエストを複製します。
更新(彼のコメントのpguardiarioに感謝します):
Wiresharkは、トラフィック(交換されるパケット、DNSルックアップなど)に関する詳細を提供する低レベルのネットワークキャプチャツールであり、このようなシナリオで使用するのは面倒な場合があることに注意してください。 HTTPリクエスト。
そのため、ブラウザでFiddlerまたは同様のツールを使用することをお勧めします(例:Chromeのネットワーク検査パネル)。
これは、主要な検索エンジンでさえまだ習得していないことです。これは「イベントドリブン クロール」と呼ばれます。
Google には、Ajax サイトをより適切にクロールするために何をすべきかについてのガイドもあります。
最善の方法は、いくつかのオープン ソース クローラーを読んで、その機能を確認することです。ただし、特定のターゲットを念頭に置いていない限り、80% でさえクロールできる可能性はせいぜいわずかです。
また、 crawljaxにもいくつかの興味深い読み物があります。
基本的に、スクリプトを探して、それらが ajax 呼び出しを行うかどうかを確認してから、それらが受け取るパラメーターの種類を判断し、パラメーター値を増減して繰り返し呼び出しを行う必要があります。これは、パラメーターに数字や 1 文字などの論理パターンがある場合にのみ機能します。また、既知のサイトをターゲットにするか、それを単に公開するかによっても異なります。ターゲットがわかっている場合は、その DOM を検査し、コードをカスタマイズして、オオカミが述べたように精度を高めることができます。
幸運を
Crawljaxはオープン ソースであり、Ajax ベースのコンテンツを動的にクロールできます。