2012-03-26 85 views
21

Si tratta di Windows 7 con Python 2.7Scrapy ragno non trovato errore

Ho un progetto Scrapy in una directory chiamata tappi (questo è dove scrapy.cfg è)

mio ragno si trova in maiuscolo \ caps \ \ ragni campSpider.py

I cd nel progetto Scrapy e cercare di eseguire

scrapy crawl campSpider -o items.json -t json 

ottengo un errore che il ragno non può essere trovato. Il nome della classe ècampSpider

... 
    spider = self.crawler.spiders.create(spname, **opts.spargs) 
    File "c:\Python27\lib\site-packages\scrapy-0.14.0.2841-py2.7-win32.egg\scrapy\spidermanager.py", l 
ine 43, in create 
    raise KeyError("Spider not found: %s" % spider_name) 
KeyError: 'Spider not found: campSpider' 

Mi manca qualche elemento di configurazione?

risposta

39

Assicurarsi di aver impostato il "nome" proprietà del ragno. Esempio:

class campSpider(BaseSpider): 
    name = 'campSpider' 

Senza la proprietà nome, il gestore Scrapy non sarà in grado di trovare il vostro ragno.

2

Avete impostato l'impostazione SPIDER_MODULES?

SPIDER_MODULES

predefinito: []

Un elenco dei moduli in cui Scrapy cercherà per i ragni.

Esempio:

SPIDER_MODULES = ['mybot.spiders_prod', 'mybot.spiders_dev']

16

Assicurati inoltre che il tuo progetto non venga chiamato scrapy! Ho fatto quell'errore e rinominandolo ha risolto il problema.

+3

Contento di aver visto questo prima di spendere ore a cercare di capirlo: P – cdvv7788

+0

Questo è il più strano errore che abbia mai avuto – nmu

+0

giusto? Grazie per il testa a testa? –

1

assicurarsi che il file spider sia salvato nella directory spider. il crawler cerca il nome spider nella directory spider

2

Devi dare un nome al tuo spider.

Tuttavia, BaseSpider è deprecato, utilizzare Spider invece.

from scrapy.spiders import Spider 
class campSpider(Spider): 
    name = 'campSpider' 

Il progetto deve essere stato creato dal comando startproject:

scrapy startproject project_name 

che vi dà la seguente struttura di directory:

project_name/ 
    scrapy.cfg   # deploy configuration file 

    project_name/    # project's Python module, you'll import your code from here 
     __init__.py 

     items.py   # project items file 

     pipelines.py  # project pipelines file 

     settings.py  # project settings file 

     spiders/   # a directory where you'll later put your spiders 
      __init__.py 
      ... 

Assicurarsi che settings.py ha la definizione del tuo modulo spider. esempio:

BOT_NAME = 'bot_name' # Usually equals to your project_name 

SPIDER_MODULES = ['project_name.spiders'] 
NEWSPIDER_MODULE = 'project_name.spiders' 

Si dovrebbe avere problemi per eseguire il vostro ragno in locale o su ScrappingHub.

-1

Controllare anche il rientro, la classe per il mio ragno era rientrata in una scheda. In qualche modo ciò rende la classe non valida o qualcosa del genere.

0

Provare a eseguire scrapy list sulla riga di comando. Se c'è qualche errore sullo spider lo rileverà.

Nel mio caso, mi è stato senza mezzi termini copiare il codice da un altro progetto e dimenticare di modificare il nome del progetto dall'importazione modulo di ragno

Problemi correlati