2012-03-26 238 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。如果蜘蛛有任何錯誤,它會檢測到它。

以我爲例,我是毫不客氣地從另一個項目中複製的代碼,卻忘了將項目名稱從蜘蛛模塊進口