Merge pull request #1079 from kmike/feed-iterate-spider-output

CSVFeedSpider cleanup: use iterate_spider_output
This commit is contained in:
Mikhail Korobov 2015-03-18 04:44:50 +05:00
commit d14c972ed9
1 changed files with 2 additions and 7 deletions

View File

@ -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