1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-23 21:44:19 +00:00

CSVFeedSpider cleanup: use iterate_spider_output

A similar fix was made for XMLFeedSpider in 95fde0a498
This commit is contained in:
Mikhail Korobov 2015-03-17 23:31:29 +05:00
parent 62c4481d78
commit 6974902323

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