2012-03-26 242 views
21

这是由于Windows 7与Python 2.7Scrapy蜘蛛没有发现错误

我有一个目录中称为盖一个scrapy项目(这是scrapy.cfg是)

我的蜘蛛位于帽\帽\蜘蛛\ campSpider.py

我的CD到scrapy项目并尝试运行

scrapy crawl campSpider -o items.json -t json 

我得到蜘蛛无法找到一个错误。类名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' 

我错过了一些配置项?

回答

39

确保您已设置了蜘蛛的“名称” 属性。 例子:

class campSpider(BaseSpider): 
    name = 'campSpider' 

没有name属性,该scrapy管理器将无法找到你的蜘蛛。

2

您是否设置了SPIDER_MODULES设置?

SPIDER_MODULES

默认:[]

模块,其中Scrapy将寻找蜘蛛的列表。

例子:

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

16

此外请确保您的项目不叫scrapy!我犯了这个错误,重命名它解决了这个问题。

+3

高兴我花了几个小时试图弄清楚之前看到这个改变:P – cdvv7788 2014-09-24 18:35:53

+0

这是怪异错误我曾经有 – nmu 2017-09-08 14:42:35

+0

对不对?谢谢你的抬头? – 2018-02-04 20:52:15

1

确保您的蜘蛛文件保存在您的蜘蛛目录中。履带寻找蜘蛛目录中的蜘蛛名称

2

你必须给你的蜘蛛命名。

然而,BaseSpider弃用,使用蜘蛛代替。

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

该项目应该已经在startproject命令命令创建:

scrapy startproject project_name 

它给你下面的目录树:

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

确保settings.py有你的蜘蛛模块的定义。 如:

BOT_NAME = 'bot_name' # Usually equals to your project_name 

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

你应该没有问题,在本地或ScrappingHub运行蜘蛛。

-1

检查缩进也是,我的蜘蛛类缩进了一个标签。不知何故,这使得班级无效或什么。

0

尝试在命令行上运行scrapy list。如果蜘蛛有任何错误,它会检测到它。

以我为例,我是毫不客气地从另一个项目中复制的代码,却忘了将项目名称从蜘蛛模块进口