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
答
根据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模块文件夹。
你可以发布你的项目结构吗?谢谢。 – alecxe
'BaseSpider'已弃用,只需使用'Spider' ...本教程多长时间? –
@NickT它从2013年 –