2014-01-07 3 views
0

У меня возникли проблемы, создающие паука Scrapy в Scrapy учебнике:Scrapy ключ ошибка

http://doc.scrapy.org/en/latest/intro/tutorial.html#our-first-spider

Вот что у меня есть в моих пауков/dmoz_spider.py файл:

class DmozSpider(object): 
    name = "dmoz" 
    allowed_domains = ["dmoz.org"] 
    start_urls = [ 
    "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", 
    "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" 
    ] 

    @classmethod 
    def from_crawler(cls, crawler): 
    spider = crawler.spiders 
    return cls(spider) 

    def parse(self, response): 
    filename = response.url.split("/")[-2] 
    open(filename, 'wb').write(response.body) 

В Хорошая новость - я уверен, что паук создается. Плохая новость - я получаю эту ошибку:

(scrapestat)unknownc8e0eb148153:tutorial christopherspears$ scrapy crawl dmoz 
Traceback (most recent call last): 
    File "/Users/christopherspears/.virtualenvs/scrapestat/bin/scrapy", line 4, in <module> 
    execute() 
    File "/Users/christopherspears/.virtualenvs/scrapestat/lib/python2.7/site-packages/scrapy/cmdline.py", line 143, in execute 
    _run_print_help(parser, _run_command, cmd, args, opts) 
    File "/Users/christopherspears/.virtualenvs/scrapestat/lib/python2.7/site-packages/scrapy/cmdline.py", line 89, in _run_print_help 
    func(*a, **kw) 
    File "/Users/christopherspears/.virtualenvs/scrapestat/lib/python2.7/site-packages/scrapy/cmdline.py", line 150, in _run_command 
    cmd.run(args, opts) 
    File "/Users/christopherspears/.virtualenvs/scrapestat/lib/python2.7/site-packages/scrapy/commands/crawl.py", line 48, in run 
    spider = crawler.spiders.create(spname, **opts.spargs) 
    File "/Users/christopherspears/.virtualenvs/scrapestat/lib/python2.7/site-packages/scrapy/spidermanager.py", line 44, in create 
    raise KeyError("Spider not found: %s" % spider_name) 
KeyError: 'Spider not found: dmoz' 

Не знаете, в чем проблема. Любые намеки?

ответ

1

DmozSpider должен унаследовать от BaseSpider (или Spider, зависит от вашей версии). Итак, сделайте следующие изменения в коде:

from scrapy.spider import BaseSpider 

class DmozSpider(BaseSpider): 
    ... 

Я попробовал сам, и когда класс паук наследует от объекта, который KeyError поднимается.

+0

Отлично! Благодаря! Из любопытства мне все еще нужен метод from_crawler? –

Смежные вопросы