Qualcuno può spiegare la differenza tra runpider e crawl comandi? Quali sono i contesti in cui dovrebbero essere utilizzati?Python Scrapy: Qual è la differenza tra i comandi "runspider" e "crawl"?
risposta
Nel comando:
scrapy crawl [options] <spider>
<spider>
è il nome del progetto (definito in settings.py, come BOT_NAME
).
E nel comando:
scrapy runspider [options] <spider_file>
<spider_file>
è il percorso del file che contiene il ragno.
In caso contrario, le opzioni sono le stesse:
Options
=======
--help, -h show this help message and exit
-a NAME=VALUE set spider argument (may be repeated)
--output=FILE, -o FILE dump scraped items into FILE (use - for stdout)
--output-format=FORMAT, -t FORMAT
format to use for dumping items with -o
Global Options
--------------
--logfile=FILE log file. if omitted stderr will be used
--loglevel=LEVEL, -L LEVEL
log level (default: DEBUG)
--nolog disable logging completely
--profile=FILE write python cProfile stats to FILE
--lsprof=FILE write lsprof profiling stats to FILE
--pidfile=FILE write process ID to FILE
--set=NAME=VALUE, -s NAME=VALUE
set/override setting (may be repeated)
--pdb enable pdb on failure
Dal runspider
non dipende dal parametro BOT_NAME
, a seconda del modo in cui si sta personalizzando le vostre ruspe, si potrebbe trovare runspider
più flessibile.
La piccola spiegazione e la sintassi di entrambi:
runspider
Sintassi: scrapy runspider <spider_file.py>
Richiede progetto: no
Eseguire un ragno auto-contenuto in un file Python, senza dovendo creare un progetto.
Esempio utilizzo:
$ scrapy runspider myspider.py
crawl
Sintassi: scrapy crawl <spider>
Richiede progetto: sì
Avvia scansione utilizzando un ragno con il nome corrispondente.
esempiutilizzo:
$ scrapy crawl myspider
La differenza principale è che runspider
non ha bisogno di un progetto. Cioè, puoi scrivere uno spider in un file myspider.py
e chiamare scrapy runspider myspider.py
.
Il comando crawl
richiede un progetto per trovare le impostazioni del progetto, caricare gli spider disponibili dalle impostazioni SPIDER_MODULES
e cercare lo spider di name
.
Se è necessario lo spider veloce per un'attività breve, lo runspider
richiede un numero di piastre inferiore.
come fa il runpider a prendere le sue impostazioni allora? – hAcKnRoCk
@hAcKnRoCk è facoltativo. Se usi il comando 'runpider' all'interno di una directory di progetto userà le impostazioni del progetto. Altrimenti, verrà eseguito con i valori predefiniti. – Rolando