scrapy蜘蛛没找到

时间:2016-07-28 04:15:43

标签: python 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    

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

在某些情况下有效的一种解决方案是降低你的scrapy(如果它> = 1.3)。为此,您可以运行以下命令:

pip install scrapy==1.2