2012-03-28 3 views
0

私は、アイデアのプロトタイプを作るためにphp + querypathクローラを構築しています。私はそれを実行すると、ターゲットサイトは何らかの形で影響を受けるかもしれないと心配しています。それは、私が掻きたい関連するページがたくさんあるためです - 今は1361ページ。対象のWebサーバーでPhp/Querypathクローラを使用することによる既知の影響または予想される影響は何ですか?また、どのようにして最小限に抑えることができますか?

対象サイトの影響を最小限に抑えるための推奨事項は何ですか?

答えて

1

クローラを構築しているので、ターゲットのWebサイトに与えることができるのは、帯域幅を使い果たすことだけです。
1.クローラを構築する際、コンピュータ上の標的部位のサンプル・ページをダウンロードし、そのコピーにあなたのスクリプトをテスト:あなたは次の操作を行うことができ、インパクトの最小値を維持するために


2. 1361ページを削り取るために実行されているループが正常に機能していることと、各ページを1回だけダウンロードしていることを確認します。
3.スクリプトが一度に1ページしかダウンロードされていないことを確認し、必要に応じて各フェッチの間隔を入れてターゲットサーバーに負荷がかからないようにします。
4.各ページの重さに応じて、1361ページ全体を時間/日/月間にダウンロードすることができます。

1

QueryPath自体がバニラHTTPリクエストを発行します。必ずしも多数であるとは限りません。

クロールをループで実行し、あるページ数(たとえば10)を連続して取得し、数秒間スリープ状態にしてから別の10秒間グラブすることをお勧めします。以前のポスターは、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を仮定すると、あなたがこのような何かを試みることができるURLの配列です。ここで

は、他のいくつかのヒントがあります:

  • リモートサイトのrobots.txtファイルは、時々、クローラーがクロールの間(クロール遅延)を待機する時間を示唆しています。これが設定されていれば、あなたの$ wait変数を設定するための良い指標となります。
  • サイトをピーク時(例えば、2AM現地時間)に押すと、リモートサイトに要求が氾濫する可能性が最小限に抑えられます。
関連する問題