2012-03-26 64 views
21

Dies ist Windows 7 mit Python 2.7Scrapy Spinne nicht gefunden Fehler

Ich habe ein scrapy Projekt in einem Verzeichnis Kappen genannt (das ist, wo scrapy.cfg ist)

Meine Spinne in Kappen befindet Kappen \ \ Spinnen \ campSpider.py

I-cD in das scrapy Projekt und versuchen

scrapy crawl campSpider -o items.json -t json 

ich einen Fehler zu laufen, dass die Spinne nicht gefunden werden kann. Der Klassenname istcampSpider

... 
    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' 

Bin ich einige Konfigurationselement fehlt?

Antwort

39

Stellen Sie sicher, dass die "Name" Eigenschaft der Spinne festgelegt haben. Beispiel:

class campSpider(BaseSpider): 
    name = 'campSpider' 

Ohne den Namen Eigenschaft wird der scrapy Manager nicht möglich sein, Ihre Spinne zu finden.

2

Haben Sie die Einstellung SPIDER_MODULES eingerichtet?

SPIDER_MODULES

Standard: []

Eine Liste von Modulen, wo Scrapy für Spinnen suchen.

Beispiel:

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

16

Vergewissern Sie sich auch, dass Ihr Projekt nicht scrapy heißt! Ich habe diesen Fehler gemacht und das Problem umbenannt.

+3

froh, dass ich das, um einen Reim versuchen, bevor die Ausgaben Stunden sah sich ändern out: P – cdvv7788

+0

Das ist die verrückteste Fehler, den ich jemals hatte – nmu

+0

richtig? danke für die heads-up? –

1

stellen Sie sicher, dass Ihre Spider-Datei in Ihrem Spider-Verzeichnis gespeichert ist. der Crawler sucht nach dem Spider-Namen im Spider-Verzeichnis

2

Sie müssen Ihrer Spinne einen Namen geben.

jedoch BaseSpider ist veraltet, verwenden Sie Spinne statt.

scrapy startproject project_name 

dem Sie die folgenden Verzeichnisbaum gibt:

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

Das Projekt wurde von dem Befehl startproject haben sollte erstellt

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 
      ... 

Vergewissern Sie sich, dass settings.py hat die Definition Ihres Spinnenmoduls. zB:

BOT_NAME = 'bot_name' # Usually equals to your project_name 

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

sollten Sie keine Probleme haben, Ihre Spinne lokal oder auf ScrappingHub laufen.

-1

Überprüfen Sie auch die Einrückung, die Klasse für meine Spinne wurde um eine Registerkarte eingerückt. Irgendwie macht das die Klasse ungültig oder so.

0

Versuchen Sie, scrapy list in der Befehlszeile auszuführen. Wenn bei der Spinne ein Fehler auftritt, wird dies erkannt.

In meinem Fall wurde ich kopieren Code unverblümt aus einem anderen Projekt und vergessen Sie den Projektnamen aus dem Spinnen Modul Import

Verwandte Themen