Первый учебник по Scrapy dmoz возвращает ошибку en «Ошибка типа: невозможно использовать средство реализации с классами. Вместо этого используйте одну из функций объявления класса».

#python-2.7 #scrapy #dmoz

#python-2.7 #scrapy #dmoz

Вопрос:

Получение ошибки при запуске первого учебного пособия для scrapy.
Scrapy: 0.22.2
lxml: 3.3.5.0
libxml2: 2.7.8
Twisted: 12.0.0
Python: 2.7.2 (по умолчанию, октябрь 11 2012, 20:14:37) — [ GCC 4.2.1 Совместимый Apple Clang 4.0 (теги / Apple / clang-418.0.60)]
Платформа: Darwin-12.5.0-x86_64-i386-64bit

Это мой файл items.py:

 from scrapy.item import Item, Field
class DmozItem(Item)
    title=Field()
    link=Field()
    desc=Field()
 

Мой файл для dmoz_spider.py:
из scrapy.spider импортируйте BaseSpider

 class DmozSpider(BaseSpider):
    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]
            open(filename, 'wb').write(response.body)
 

Это сообщение об ошибке при запуске «scrapy crawl dmoz»

foolios-imac-2: учебное пособие foolio $ scrapy crawl dmoz /usr/local /share/tutorial/tutorial / spiders/dmoz_spider.py:3: ScrapyDeprecationWarning: tutorial.spiders.dmoz_spider.DmozSpider наследует от устаревшего класса scrapy.spider.BaseSpider, пожалуйста, наследуйте от scrapy.spider.Spider. (предупреждение только для первого подкласса, могут быть и другие) класс DmozSpider (BaseSpider):

2014-06-19 14:53:00-0500 [scrapy] ИНФОРМАЦИЯ: запущен Scrapy 0.22.2 (бот: учебное пособие)
2014-06-19 14:53:00-0500 [scrapy] ИНФОРМАЦИЯ: Доступны дополнительные функции: ssl, http11
2014-06-19 14:53:00-0500 [scrapy] ИНФОРМАЦИЯ: Переопределены настройки: {‘NEWSPIDER_MODULE’:’tutorial.spiders’, ‘SPIDER_MODULES’: [‘tutorial.spiders’], ‘BOT_NAME’: ‘tutorial’} 2014-06-19 14:53:00-0500 [scrapy] ИНФОРМАЦИЯ: Разрешенные расширения: LogStats, TelnetConsole,CloseSpider, WebService, CoreStats, обратная
трассировка SpiderState (последний последний вызов):

Файл «/usr/local/bin/scrapy», строка 5, в pkg_resources.run_script(‘Scrapy==0.22.2’, ‘scrapy’)
Файл «/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py «, строка 489, в файле run_script self.require(требуется)[0].run_script(имя_скрипта, ns)
«/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py «, строка 1207, в файле run_script execfile(script_filename, namespace, namespace)
«/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/EGG-INFO/scripts/scrapy», строка 4, в execute()
Файл «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/cmdline.py «, строка 143, в execute _run_print_help(синтаксический анализатор, _run_command, cmd, аргументы, варианты)
Файл «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/cmdline.py «, строка 89, в файле _run_print_help func(*a, **kw)
«/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/cmdline.py «, строка 150, в _run_command cmd.run(аргументы, варианты)
Файл «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/commands/crawl.py «, строка 50, в run self.crawler_process.start()
File » /Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/crawler.py «, строка 92, в start if self.start_crawling():
Файл «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/crawler.py «, строка 124, в start_crawling возвращает self._start_crawler() не
является файлом None «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/crawler.py «, строка 139, в файле _start_crawler crawler.configure()
«/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/crawler.py «,строка 47, в файле configure self.engine = ExecutionEngine(self, self._spider_closed)
«/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/core/engine.py «, строка 63, в init self.downloader = Загрузчик (поисковый робот)
File » /Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/core/downloader/init.py «, строка 73, в init self.обработчики = DownloadHandlers(обходчик)
File » /Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/core/downloader/handlers/init.py «, строка 18, в файле init cls = load_object(clspath)
«/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/utils/misc.py «, строка 40, в load_object mod = import_module(модуль)
File » /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/init.py «, строка 37, в файле import_module import(name)
«/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/core/downloader/handlers/s3.py «, строка 4, в файле from .http import
HTTPDownloadHandler «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/core/downloader/handlers/http.py «, строка 5, из .http11 импортируйте HTTP11DownloadHandler как
файл HTTPDownloadHandler «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/core/downloader/handlers/http11.py» , строка 15, из scrapy.Агент импорта xlib.tx, ProxyAgent, ResponseDone,
File «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/xlib/tx/init.py «, строка 6, в из . импортируйте клиент,
файл конечных точек» /Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/xlib/tx/client.py «, строка 37, из .конечные точки импортируют
файл TCP4ClientEndpoint, SSL4ClientEndpoint «/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/xlib/tx/endpoints.py «, строка 222, в разделе интерфейсы.IProcessTransport, ‘_process’)):
File «/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/zope/interface/declarations.py» , строка 495, в вызове raise TypeError(«Невозможно использовать разработчик с классами. Используйте один из »
Ошибка типа: невозможно использовать средство реализации с классами. Вместо этого используйте одну из функций объявления класса.


Комментарии:

1. Я уже пробовал это. Он находится в актуальном состоянии.

Ответ №1:

Попробуйте обновить zope, а затем запустите свой код

sudo pip install --upgrade zope.interface

или

sudo easy_install --upgrade zope.interface

Комментарии:

1. Я уже пытался его обновить. Моя система утверждает, что он обновлен. foolios-imac-2: spiders foolio $ sudo pip install —upgrade Пароль zope.interface: Требования уже обновлены: zope.interface в /usr/local/lib/python2.7/site-требования к пакетам уже обновлены: setuptools в / usr/local /lib/ python2.7/site-пакеты (из zope.interface) очищаются…

2. Я использую zope.interface 4.1.1