2016-07-28 187 views
0

我想重現這一談話的代碼:scrapy蜘蛛沒有發現

https://www.youtube.com/watch?v=eD8XVXLlUTE

當我嘗試運行蜘蛛:

scrapy crawl talkspider_basic 

我得到這個錯誤:

raise KeyError("Spider not found: {}".format(spider_name)) 
KeyError: 'Spider not found: talkspider_basic' 

蜘蛛的代碼是:

from scrapy.spiders import BaseSpider 
from scrapy.selector import HtmlXPathSelector 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.contrib.loader import XPathItemLoader 
from pytexas.items import PytexasItem 

class TalkspiderBasicSpider(BaseSpider): 
    name = "talkspider_basic" 
    allowed_domains = ["www.pytexas.org"] 
    start_urls = ['http://wwww.pytexas.org/2013/schedule'] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     dls = hcs.select('///dl') 
     for dl in dls: 
      times = dl.select('dt/text()').extract() 
      titles = dl.select('dd/a/text()').extract() 
      for time, title in zip(times,titles): 
       title = title.strip() 
       yield PytexasItem(title=title,time= time) 

項目的代碼是:

from scrapy.item import Item, Field 

class PytexasItem(Item): 
    title = Field() 
    time = Field() 
    speaker = Field() 
    description = Field() 

項目分別是

pytexas

talk_spider_basic.py

蜘蛛的文件的名稱,所以我不不要以爲名字會有衝突。

編輯:

它具有默認結構:

pytexas/  
    scrapy.cfg  
    pytexas/  
    items.py 
    pipelines.py 
    settings.py 
    spiders/ 
     __init__.py 
     talk_spider_basic.py  
+0

你可以發佈你的項目結構嗎?謝謝。 – alecxe

+0

'BaseSpider'已棄用,只需使用'Spider' ...本教程多長時間? –

+0

@NickT它從2013年 –

回答

1

根據Github的問題#2254。因爲某些模塊已被棄用。像scrapy.contrib

所以你應該做一些改變。

來源:

from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.contrib.loader import XPathItemLoader 

要:

from scrapy.linkextractors import LinkExtractor 
from scrapy.loader import XPathItemLoader 
0

一個解決方案,這在某些情況下工作,是降級scrapy(如果是> = 1.3)。要做到這一點,你可以運行下面的命令:

pip install scrapy==1.2

1

我知道,這個帖子可能是舊的。但我發現了另一個問題,可能會產生錯誤「未找到蜘蛛」。我有我的蜘蛛組織在文件夾中,例如<crawler-project>/spiders/full<crawler-project>/spiders/clean。所以我創建了新目錄 - <crawler-project>/spiders/aaa - 我在其中放置了新的蜘蛛。這個新的蜘蛛沒有被scrapy發現,直到我創建__init__.py文件。 所以如果你想組織文件夾中的蜘蛛,你應該創建有效的python模塊文件夾