2015-03-26 2 views
1

я узнавал, как работать с Scrapy по следующей ссылке:Не удается запустить программу Scrapy

http://doc.scrapy.org/en/master/intro/tutorial.html

Когда я пытаюсь запустить код, написанный на Crawling (scrapy crawl dmoz) раздел, я получаю следующее сообщение об ошибке:

AttributeError: 'module' object has no attribute 'Spider '

Однако, я изменил „паук“ на „паук“ и я не получил ничего, кроме новой ошибки:

TypeError: Error when calling the metaclass bases 
module.__init__() takes at most 2 arguments (3 given) 

Я так смущен, в чем проблема? Любая помощь будет высоко оценена. Благодарю. Кстати, я использую Windows.

EDIT (добавлен источник):

Сначала я создал проект с использованием Scrapy, перейдя в каталог и выполнив следующие команды УМК следующим образом:

cd #DIRECTORY PATH# 

scrapy startproject tutorial 

Это позволит создать папку с именем учебника в данном каталоге. Папка учебник состоит:

учебник/ scrapy.cfg учебник/ INIT .py items.py pipelines.py settings.py пауки/ INIT .py ...

Тогда я определил мои пункты:

import scrapy 

class DmozItem(scrapy.Item): 
    title = scrapy.Field() 
    link = scrapy.Field() 
    desc = scrapy.Field() 

Затем я создал паука:

импорт Scrapy

class DmozSpider(scrapy.Spider): 
    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/" 
    ] 

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

И после того, как, при выполнении кода, отображается ошибка. Я использую Windows 7 64 бит вместе с Python 2.7 32 бит.

EDIT 2:

Я попытался удалить и установить другую версию Scrapy, но это не сработало. Вот лог:

C:\Users\Novin Pendar\Desktop\FS\tutorial>scrapy crawl dmoz 
2015-03-26 17:48:29+0430 [scrapy] INFO: Scrapy 0.16.5 started (bot: tutorial) 
2015-03-26 17:48:29+0430 [scrapy] DEBUG: Enabled extensions: LogStats, TelnetCon 
sole, CloseSpider, WebService, CoreStats, SpiderState 
C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\__init__.pyc 
Traceback (most recent call last): 
    File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "C:\Python27\lib\runpy.py", line 72, in _run_code 
    exec code in run_globals 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\cmdline.py" 
, line 156, in <module> 
    execute() 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\cmdline.py" 
, line 131, in execute 
    _run_print_help(parser, _run_command, cmd, args, opts) 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\cmdline.py" 
, line 76, in _run_print_help 
    func(*a, **kw) 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\cmdline.py" 
, line 138, in _run_command 
    cmd.run(args, opts) 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\commands\cr 
awl.py", line 43, in run 
    spider = self.crawler.spiders.create(spname, **opts.spargs) 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\command.py" 
, line 33, in crawler 
    self._crawler.configure() 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\crawler.py" 
, line 40, in configure 
    self.spiders = spman_cls.from_crawler(self) 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\spidermanag 
er.py", line 35, in from_crawler 
    sm = cls.from_settings(crawler.settings) 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\spidermanag 
er.py", line 31, in from_settings 
    return cls(settings.getlist('SPIDER_MODULES')) 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\spidermanag 
er.py", line 22, in __init__ 
    for module in walk_modules(name): 
    File "C:\Python27\lib\site-packages\scrapy-0.16.5-py2.7.egg\scrapy\utils\misc. 
py", line 65, in walk_modules 
    submod = __import__(fullpath, {}, {}, ['']) 
    File "tutorial\spiders\dmoz_spider.py", line 3, in <module> 
    class DmozSpider(scrapy.Spider): 
AttributeError: 'module' object has no attribute 'Spider' 

EDIT 3:

Проблема решена. Я загрузил последнюю версию Scrapy (0.24) и установил. Все работало так здорово. Просто хотел сказать людям, у которых есть те же проблемы, к которым я привык, поэтому они сэкономит им много времени. Благодарю.

+0

Пожалуйста, проверьте код, который вы написали. Если это точно так же, как в учебнике, напишите, что вы здесь написали, и кто-то может отладить его для вас. –

+0

Я отредактирую свое сообщение. Благодарю. –

+0

Как вы установили scrapy? –

ответ

1

Если установка correct.Try это

Проверьте любой scrapy.py или scrapy.pyc, в рабочем folder.If существует, переименуйте его.Dont изменить Spider к spider

+0

Ни один из файлов, которые вы указали, не находится в рабочем каталоге. Благодарю. –

+0

Затем напечатайте 'scrapy .__ file__' после' import scrapy' – itzMEonTV

+0

Вот результат: C: \ Python27 \ lib \ site-packages \ scrapy-0.22.2-py2.7.egg \ scrapy \ __ init __. Pyc Что означает ли этот код? –

0

использовать такое определение: класс DmozSpider (scrapy.spider.BaseSpider):

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