【发布时间】: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 告诉你它找不到蜘蛛。发生这种情况的原因有很多,如果没有更多细节就很难诊断。您可以尝试创建一个新项目,然后创建一个新蜘蛛,看看它是否可以“运行”(什么都不做)。重新添加东西,看看是什么破坏了它。