Scrapy (1.0) - Сигналы не получены

То, что я пытаюсь сделать, это запустить функцию (abc) при открытии паука scrapy, который должен запускаться «сигналами» scrapys.

(Позже я хочу изменить его на «закрытый», чтобы сохранять статистику от каждого паука в базу данных для ежедневного мониторинга.) Итак, сейчас я попробовал это простое решение, просто чтобы распечатать что-то, что я ожидал увидеть в консоли. когда я запускаю процесс сканирования в момент открытия паука.

Что происходит, так это то, что сканер работает нормально, но не печатает вывод «abc» в тот момент, когда паук открывается, что должно вызвать вывод. В конце я опубликовал то, что вижу в консоли, а именно то, что паук работает отлично.

Почему функция abc не срабатывает по сигналу в том месте, где в логе (или вообще) отображается ИНФО: Паук открыт?

MyCrawlerProcess.py:

from twisted.internet import reactor
from scrapy import signals
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

process = CrawlerProcess(get_project_settings())

def abc():
    print '######################works!######################'

def from_crawler(crawler):
    crawler.signals.connect(abc, signal=signals.spider_opened)

process.crawl('Dissident')
process.start() # the script will block here until the crawling is finished

Вывод в консоль:

2016-03-17 13:00:14 [scrapy] INFO: Scrapy 1.0.4 started (bot: Chrome 41.0.2227.1. Mozilla/5.0 (Macintosh; Intel Mac Osource)
2016-03-17 13:00:14 [scrapy] INFO: Optional features available: ssl, http11
2016-03-17 13:00:14 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'scrapytry.spiders', 'SPIDER_MODULES': ['scrapytry.spiders'], 'DOWNLOAD_DELAY': 5, 'BOT_NAME': 'Chrome 41.0.2227.1. Mozilla/5.0 (Macintosh; Intel Mac Osource'}
2016-03-17 13:00:14 [scrapy] INFO: Enabled extensions: CloseSpider, TelnetConsole, LogStats, CoreStats, SpiderState
2016-03-17 13:00:14 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats
2016-03-17 13:00:14 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2016-03-17 13:00:14 [scrapy] INFO: Enabled item pipelines: ImagesPipeline, FilesPipeline, ScrapytryPipeline
2016-03-17 13:00:14 [scrapy] INFO: Spider opened
2016-03-17 13:00:14 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2016-03-17 13:00:14 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-03-17 13:00:14 [scrapy] DEBUG: Crawled (200) <GET http://www.xyz.zzm/> (referer: None)

person beaker    schedule 17.03.2016    source источник


Ответы (1)


Простого определения from_crawler недостаточно, так как оно не подключено к платформе scrapy. Ознакомьтесь с здесь, где показано, как создать расширение, делает именно то, что вы пытаетесь сделать. Обязательно следуйте инструкциям по включению расширения через настройку MYEXT_ENABLED.

person Steve    schedule 17.03.2016
comment
Большое спасибо, работает! использовал пример, найденный в ссылке, и добавил и включил расширение. # Включить или отключить расширения # См. scrapy.readthedocs.org/en/latest/topics /extensions.html MYEXT_ENABLED = True EXTENSIONS = { 'scrapytry.MyExtension.SpiderOpenCloseLogging': 500, } - person beaker; 17.03.2016