'Receives a response and a dict (representing each row) with a key for
each provided (or detected) header of the CSV file.  This spider also
gives the opportunity to override adapt_response and
process_results methods for pre and post-processing purposes.'

def parse_rows(self, response):

    for row in csviter(response, self.delimiter, self.headers, self.quotechar):
        ret = iterate_spider_output(self.parse_row(response, row))
        for result_item in self.process_results(response, ret):
            (yield result_item)
