From 6974902323f4b4cecbe663e6e0ff4c67c0557029 Mon Sep 17 00:00:00 2001 From: Mikhail Korobov Date: Tue, 17 Mar 2015 23:31:29 +0500 Subject: [PATCH] CSVFeedSpider cleanup: use iterate_spider_output A similar fix was made for XMLFeedSpider in https://github.com/scrapy/scrapy/commit/95fde0a4987acaa75a6749223c8b7f9bd7081c23 --- scrapy/contrib/spiders/feed.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/scrapy/contrib/spiders/feed.py b/scrapy/contrib/spiders/feed.py index 1a95c5c35..d83ee605e 100644 --- a/scrapy/contrib/spiders/feed.py +++ b/scrapy/contrib/spiders/feed.py @@ -5,8 +5,6 @@ for scraping from an XML feed. See documentation in docs/topics/spiders.rst """ from scrapy.spider import Spider -from scrapy.item import BaseItem -from scrapy.http import Request from scrapy.utils.iterators import xmliter, csviter from scrapy.utils.spider import iterate_spider_output from scrapy.selector import Selector @@ -92,6 +90,7 @@ class XMLFeedSpider(Spider): for (prefix, uri) in self.namespaces: selector.register_namespace(prefix, uri) + class CSVFeedSpider(Spider): """Spider for parsing CSV feeds. It receives a CSV file in a response; iterates through each of its rows, @@ -125,11 +124,7 @@ class CSVFeedSpider(Spider): """ for row in csviter(response, self.delimiter, self.headers, self.quotechar): - ret = self.parse_row(response, row) - if isinstance(ret, (BaseItem, Request)): - ret = [ret] - if not isinstance(ret, (list, tuple)): - raise TypeError('You cannot return an "%s" object from a spider' % type(ret).__name__) + ret = iterate_spider_output(self.parse_row(response, row)) for result_item in self.process_results(response, ret): yield result_item