diff --git a/docs/topics/signals.rst b/docs/topics/signals.rst index 6434c98c5..0306ee4a5 100644 --- a/docs/topics/signals.rst +++ b/docs/topics/signals.rst @@ -16,6 +16,37 @@ deliver the arguments that the handler receives. You can connect to signals (or send your own) through the :ref:`topics-api-signals`. +Here is a simple example showing how you can catch signals and perform some action: +:: + + from scrapy import signals + from scrapy import Spider + + + class DmozSpider(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/", + ] + + + @classmethod + def from_crawler(cls, crawler, *args, **kwargs): + spider = super(DmozSpider, cls).from_crawler(crawler, *args, **kwargs) + crawler.signals.connect(spider.spider_closed, signal=signals.spider_closed) + return spider + + + def spider_closed(self, spider): + spider.logger.info('Spider closed: %s', spider.name) + + + def parse(self, response): + pass + + Deferred signal handlers ======================== diff --git a/scrapy/utils/misc.py b/scrapy/utils/misc.py index 741d378d6..30c9e5058 100644 --- a/scrapy/utils/misc.py +++ b/scrapy/utils/misc.py @@ -1,4 +1,4 @@ -"""Helper functions which doesn't fit anywhere else""" +"""Helper functions which don't fit anywhere else""" import re import hashlib from importlib import import_module