2009-04-28 4 views
5

Esiste una durata temporale standard che un crawler deve attendere tra una serie di hit ripetuti sullo stesso server, in modo da non sovraccaricare il server.Qual è la durata ottimale per un web crawler di attendere tra richieste ripetute su un server web

In caso contrario, qualsiasi suggerimento su cosa può essere un buon periodo di attesa per il crawler per essere considerato educato.

Questo valore varia anche da server a server ... e in tal caso come si può determinarlo?

+0

Grazie per le risposte rapide ragazzi ... attualmente la mia prima preoccupazione non è quella di colpire i server web troppo velocemente ... ogni suggerimento a riguardo sarà fantastico! –

+0

Hai dimenticato di menzionare ... sto colpendo URL diversi dallo stesso dominio ogni volta ... cercando di capire l'intervallo ottimale tra tali richieste –

risposta

0

Ciò dipenderà dalla frequenza con cui il contenuto cambia. Ad esempio, ha senso eseguire la scansione di un sito di notizie più spesso di un sito con articoli statici.

Per sapere esattamente come determinare l'optimum, dipende da come giudichi il costo del recupero, dell'indicizzazione, ecc. Rispetto al valore di avere dati aggiornati. Dipende solo da te, ma probabilmente dovrai usare delle euristiche per capire quanto il sito sta cambiando nel tempo, in base alle osservazioni. Se un sito non è stato modificato per tre recuperi di fila, potresti voler aspettare ancora un po 'prima di andare a prenderti la prossima volta. Viceversa, se un sito cambia sempre ogni volta che lo si preleva, si potrebbe voler essere un po 'più aggressivo per evitare aggiornamenti mancanti.

+1

Curioso, il crawler dovrebbe cercare di rispettare il tag HTTP "expires"? – dirkgently

+0

È possibile utilizzare un modello logaritmico per regolare l'intervallo di tempo, in base all'intervallo di tempo tra le modifiche del contenuto. –

3

Questo articolo su IBM va in qualche dettaglio sulla how the Web crawler uses the robots exclusion protocol e recrawl interval settings in the Web crawler

Per citare gli articoli.

La prima volta che una pagina viene sottoposta a ricerca per indicizzazione, il crawler utilizza la data e l'ora di scansione della pagina e una media degli intervalli di ricapitolazione minima e massima specificati per impostare una data di ricapitolazione. La pagina non verrà riadattata prima di quella data. La volta in cui la pagina verrà nuovamente visualizzata dopo tale data dipende dal carico del crawler e dal saldo degli URL nuovi e vecchi nello spazio di ricerca per indicizzazione.

Ogni volta che la pagina viene rieseguita, il crawler verifica se il contenuto è cambiato. Se il contenuto è stato modificato, il successivo intervallo di ricapitolazione sarà più breve di quello precedente, ma mai più breve dell'intervallo di ripetizione minimo specificato. Se il contenuto non è stato modificato, il successivo intervallo di ripetizione della scansione sarà più lungo del precedente, ma mai più lungo dell'intervallo massimo di ricomposizione specificato.

Si tratta del proprio web crawler ma è molto utile nella lettura mentre si costruisce il proprio strumento.

0

Non penso che ci sia un intervallo minimo su quanto spesso si può colpire un sito, in quanto è altamente dipendente dal carico del server corrente e capacità del server.

È possibile provare a verificare i tempi di risposta e i tempi di timeout, se un sito risponde lentamente o si verificano errori di timeout, è necessario aumentare l'intervallo di rientro, anche se potrebbe non essere il crawler a causare la lentezza o i time-out.

1

So che potrebbe essere un po 'tardi, ma le risposte non mi hanno aiutato con questa domanda. Anch'io sono preoccupato per la frequenza con cui un crawler colpisce un server. Soprattutto leggere il file wotsite.org robots.txt in cui ha disabilitato i bot che "Hits molte volte al secondo, non accettabili".

Ho trovato questo interessante articolo di MS Research intitolato Web Crawler Architecture - http://research.microsoft.com/pubs/102936/EDS-WebCrawlerArchitecture.pdf. Quanto segue è tratto dal documento che parla di politeni.

Ci sono molte possibili politiche di cortesia; uno che è particolarmente facile da implementare è quello di non consentire richieste concorrenti allo stesso server web; una politica un po 'più sofisticata sarebbe quella di aspettare il tempo proporzionale all'ultima ora di download prima di contattare nuovamente un determinato server web.