2011-10-14 16 views
13

Ho iniziato a utilizzare Scrapy per analizzare alcuni siti Web. Se successivamente aggiungo un nuovo campo al mio modello o cambio le mie funzioni di analisi, mi piacerebbe poter "riprodurre" i dati grezzi scaricati offline per raschiare di nuovo. Sembra Scrapy ha avuto la possibilità di memorizzare i dati grezzi in un file di replay a un certo punto:Riprodurre uno spider Scrapy sui dati memorizzati

http://dev.scrapy.org/browser/scrapy/trunk/scrapy/command/commands/replay.py?rev=168

Ma questa funzionalità sembra essere stato rimosso nella versione corrente di Scrapy. C'è un altro modo per raggiungere questo obiettivo?

+1

hai provato a chiedere alla ML? Mi sembra ingiusto se ti pongo la tua domanda lì e mi limito a incollare la risposta: P – naeg

+1

Se hai una soluzione al mio problema, per me va bene - fai riferimento alla tua fonte;) – del

risposta

18

Se si esegue crawl --record=[cache.file] [scraper], sarà quindi possibile utilizzare replay [scraper].

In alternativa, è possibile memorizzare nella cache tutte le risposte con l'HttpCacheMiddleware includendolo nel DOWNLOADER_MIDDLEWARES:

DOWNLOADER_MIDDLEWARES = { 
    'scrapy.contrib.downloadermiddleware.httpcache.HttpCacheMiddleware': 300, 
} 

Se fate questo, ogni volta che si esegue il raschietto, controllerà prima il file system.

+0

Ho provato 'crawy scrapl --record = mycache myspider' e ha ricevuto il messaggio di errore "scansione: errore: nessuna opzione: --record". Sto usando Scrapy 0.12.0.2548. L'uso di HttpCacheMiddleware non funzionerà poiché farò richieste multiple identiche nel tempo che restituiranno risposte diverse. – del

3

È possibile attivare HTTPCACHE_ENABLED come detto http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html?highlight=FilesystemCacheStorage#httpcache-enabled

per mettere in cache tutte le richieste HTTP e la risposta di implementare curriculum strisciando.

o provare Jobs per mettere in pausa e riprendere la striscia http://scrapy.readthedocs.org/en/latest/topics/jobs.html

+0

Questo non funzionerà se voglio fare richieste identiche nel tempo che restituiranno risposte diverse. Ad esempio, cosa succede se voglio raschiare la home page di slashdot.org ogni ora? Non riesco a riprodurlo, poiché la voce della cache verrà sovrascritta ogni ora. – del

Problemi correlati