scrapy蜘蛛没有发现

问题描述:

我想重现这一谈话的代码: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年 –

根据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 

一个解决方案,这在某些情况下工作,是降级scrapy(如果是> = 1.3)。要做到这一点,你可以运行下面的命令:

pip install scrapy==1.2

我知道,这个帖子可能是旧的。但我发现了另一个问题,可能会产生错误“未找到蜘蛛”。我有我的蜘蛛组织在文件夹中,例如<crawler-project>/spiders/full<crawler-project>/spiders/clean。所以我创建了新目录 - <crawler-project>/spiders/aaa - 我在其中放置了新的蜘蛛。这个新的蜘蛛没有被scrapy发现,直到我创建__init__.py文件。 所以如果你想组织文件夹中的蜘蛛,你应该创建有效的python模块文件夹