【问题标题】:scrapy spider not found没有找到scrapy spider
【发布时间】:2016-07-28 04:15:42
【问题描述】:

我正在尝试重现此演讲的代码:

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)

Items的代码是:

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    

【问题讨论】:

  • 你能发布你的项目结构吗?谢谢。
  • BaseSpider 已弃用,只需使用 Spider...本教程有多少年了?
  • @NickT 来自 2013 年
  • 问题是 Scrapy 找不到蜘蛛。您的scrapy.cfg 需要指定设置文件的正确位置,然后在您的settings.py 文件中您应该有SPIDER_MODULES = ['pytexas.spiders'] 或类似文件。如果看起来没问题,你安装了什么版本的 Scrapy 和 zope.interface
  • Scrapy 告诉你它找不到蜘蛛。发生这种情况的原因有很多,如果没有更多细节就很难诊断。您可以尝试创建一个新项目,然后创建一个新蜘蛛,看看它是否可以“运行”(什么都不做)。重新添加东西,看看是什么破坏了它。

标签: python scrapy


【解决方案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

【讨论】:

    【解决方案2】:

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

    pip install scrapy==1.2

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-19
        • 2014-03-18
        • 2015-02-14
        相关资源
        最近更新 更多