2011-12-17 16 views
6

Ho una domanda in due parti.Essendo un buon cittadino e web-scraping

In primo luogo, sto scrivendo un web-raschietto basato sullo spider CrawlSpider in Scrapy. Sto mirando a raschiare un sito Web che ha migliaia di record (possibili in centinaia di migliaia). Questi record sono sepolti 2-3 livelli in basso dalla pagina iniziale. Quindi in pratica ho l'avvio spider su una determinata pagina, eseguo la scansione finché non trova un tipo specifico di record e quindi analizzo l'html. Quello che mi chiedo sono quali metodi esistono per impedire al mio spider di sovraccaricare il sito? C'è forse un modo per fare le cose in modo incrementale o mettere una pausa tra le diverse richieste?

Secondo, e relativo, esiste un metodo con Scrapy per testare un crawler senza porre eccessivo stress su un sito? So che puoi uccidere il programma mentre è in esecuzione, ma c'è un modo per fermare lo script dopo aver colpito qualcosa come la prima pagina che ha le informazioni che voglio analizzare?

Qualsiasi consiglio o risorsa sarebbe molto apprezzato.

risposta

6

C'è forse un modo per fare della cosa in modo incrementale

sto usando la capacità di caching Scrapy per raschiare sito incrementaly

HTTPCACHE_ENABLED = True

Oppure si può utilizzare la nuova 0.14 funzione Jobs: pausing and resuming crawls

o mettere una pausa in tra diverse richieste?

controllare questo impostazioni:

DOWNLOAD_DELAY  
RANDOMIZE_DOWNLOAD_DELAY 

Esiste un metodo con Scrapy per testare un cingolato senza mettere eccessivo stress su un sito?

È possibile provare ed eseguire il debug di codice in Scrapy shell

So che si può uccidere il programma durante l'esecuzione, ma c'è un modo per far cessare lo script dopo aver colpito qualcosa come la prima pagina che ha le informazioni che voglio analizzare?

Inoltre, è possibile chiamare scrapy.shell.inspect_response in qualsiasi momento nel proprio spider.

Qualsiasi consiglio o risorsa sarebbe molto apprezzato.

La documentazione migliore è la documentazione di scrapbooking.

+0

Impressionante. Grazie mille. – user1074057

-2

È necessario iniziare la scansione e registrare tutto. Nel caso in cui venissi bannato, puoi aggiungere sleep() prima della richiesta di pagine.

Cambiare User-Agent è una buona pratica, anche (http://www.user-agents.org/ http://www.useragentstring.com/)

Se vieni bannato da IP, utilizzare proxy per aggirarlo. Saluti.

+1

Questa è una risposta interessante a una domanda su "essere un buon cittadino e scraping web" :) – damd

Problemi correlati