アイデアのプロトタイプを作成するために、php+querypath クローラーを作成しています。スクレイピングしたい関連ページが多数あるため、実行するとターゲットサイトに何らかの影響が及ぶのではないかと心配しています.1361ページです。
ターゲット サイトへの影響を最小限に抑えるための推奨事項は何ですか?
アイデアのプロトタイプを作成するために、php+querypath クローラーを作成しています。スクレイピングしたい関連ページが多数あるため、実行するとターゲットサイトに何らかの影響が及ぶのではないかと心配しています.1361ページです。
ターゲット サイトへの影響を最小限に抑えるための推奨事項は何ですか?
クローラーを構築しているため、ターゲット Web サイトに与えることができる唯一の影響は、帯域幅を使い果たすことです。
影響を最小限に抑えるには、次のことを実行できます
。 1. クローラーの構築中に、ターゲット サイトのサンプル ページをコンピューターにダウンロードし、そのコピーでスクリプトをテストします。
2. 1361 ページをスクレイピングするために実行されているループが適切に機能し、各ページを 1 回だけダウンロードしていることを確認します。
3. スクリプトが一度に 1 ページのみをダウンロードしていることを確認し、必要に応じて各フェッチ間の間隔を含めて、ターゲット サーバーの負荷を軽減します。
4. 各ページの重さに応じて、1361 ページ全体を数時間/数日/数か月かけてダウンロードすることを決定できます。
QueryPath 自体は普通の HTTP リクエストを発行します。1361 も必ずしも大きな数ではありません。
クロールをループで実行し、連続していくつかのページ (たとえば 10 ページ) を取得し、数秒間スリープしてから、さらに 10 ページを取得することをお勧めします。$urls が URL の配列であると仮定すると、次のように試すことができます。
$count = count($urls);
$interval = 10; // Every ten times...
$wait = 2; // Wait two seconds.
for ($i = 0; $i < $count; ++$i) {
// Do whatever you're going to do with QueryPath.
$qp = qp($url);
if ($i > 0 && $i % $interval == 0) {
sleep($wait);
}
}
前の投稿者が示唆しているように、少数の URL でテストしてから、そこから上に進んでください。
その他のヒントを次に示します。