diff --git a/scrapy/core/scraper.py b/scrapy/core/scraper.py index 70214e043..21ef31a05 100644 --- a/scrapy/core/scraper.py +++ b/scrapy/core/scraper.py @@ -180,16 +180,19 @@ class Scraper(object): """Log and silence errors that come from the engine (typically download errors that got propagated thru here) """ - if spider_failure is download_failure: - errmsg = spider_failure.getErrorMessage() - if spider_failure.frames: - log.err(spider_failure, 'Error downloading %s' % request, - level=log.ERROR, spider=spider) - elif errmsg: - log.msg(format='Error downloading %(request)s: %(errmsg)s', - level=log.ERROR, spider=spider, request=request, errmsg=errmsg) - return - return spider_failure + if isinstance(download_failure, Failure): + if download_failure.frames: + log.err(download_failure, 'Error downloading %s' % request, + spider=spider) + else: + errmsg = download_failure.getErrorMessage() + if errmsg: + log.msg(format='Error downloading %(request)s: %(errmsg)s', + level=log.ERROR, spider=spider, request=request, + errmsg=errmsg) + + if spider_failure is not download_failure: + return spider_failure def _itemproc_finished(self, output, item, response, spider): """ItemProcessor finished for the given ``item`` and returned ``output``