Первый урок Scrapy dmoz, возвращающий ошибку en: "Ошибка типа: невозможно использовать реализатор с классами. Вместо этого используйте одну из функций объявления классов".
Получение ошибки при запуске первого урока для scrapy.
Scrapy: 0,22,2
lxml: 3.3.5.0
libxml2: 2.7.8
Витая: 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 наследуется от устаревшей классовой scrap. пожалуйста, наследуй от 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
Traceback (последний вызов был последним):Файл "/ 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 (имя_файла_скрипта, пространство имен, пространство имен)
Файл "/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(parser, _run_command, cmd, args, opts)
Файл "/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/cmdline.py", строка 89, в функции _run_print_help (*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, в прогоне self.crawler_process.start()
Файл "/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/crawler.py", строка 92, в начале, если 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 = Downloader (сканер)
Файл "/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/core/downloader/init.py", строка 73, в init self.handlers = DownloadHandlers (crawler)
Файл "/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(модуль)
Файл "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/init.py", строка 37, в import_module import(имя)
Файл "/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/core/downloader/handlers/s3.py", строка 4, из.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, \
Файл "/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, из.endpoints, импорт TCP4ClientEndpoint, SSL4ClientEndpoint
Файл "/Library/Python/2.7/site-packages/Scrapy-0.22.2-py2.7.egg/scrapy/xlib/tx/endpoints.py", строка 222, в interfaces.IProcessTransport, '_process')):
Файл "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/zope/interface/declarations.py", строка 495, в вызове вызывать TypeError("Невозможно использовать реализатор с классами. Использовать один из "
TypeError: Невозможно использовать реализатор с классами. Вместо этого используйте одну из функций объявления класса.
1 ответ
Попробуйте обновить zope и затем запустите ваш код
sudo pip install --upgrade zope.interface
или же
sudo easy_install --upgrade zope.interface