Как экспортировать динамические c столбцы в CSV с помощью Scrapy CsvItemExporter - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть паук-скрап, который собирает детали с сайта. Это хорошо работает для фиксированных полей Item. Он также извлекает поля динамического c с веб-сайта, но не добавляет все извлеченные поля динамического c в выходной файл CSV.

Для экспорта записей в CSV я использую CsvItemExporter.

Найти класс Below Item для полей Dynami c

class MortgageInfoItem(scrapy.Item):
def __setitem__(self, key, value):
    if key not in self.fields:
        if "date" in key:
            self.fields[key] = scrapy.Field(serializer=serialize_date)
        else:
            self.fields[key] = scrapy.Field(serializer=serialize_text)
    self._values[key] = value

Поля могут различаться для каждой записи. Например, первая запись имеет владельца1 и владельца2, следующая запись имеет владельца1, владельца2 и владельца3 следующим образом.

Итак, наконец, мне нужен CSV-файл, содержащий всю информацию о владельце. (например, владелец1, владелец2, владелец3, ...)

Найдите приведенный ниже класс для экспортера csv

class MultiCSVItemPipeline(object):
CSVDir = 'output' + settings.DIRECTORY
file_name = "MortGage_info"
max_columns = 0

def __init__(self):
    dispatcher.connect(self.spider_opened, signal=signals.spider_opened)
    dispatcher.connect(self.spider_closed, signal=signals.spider_closed)

def spider_opened(self, spider):
    self.file = open(self.CSVDir + self.file_name + '.csv', 'w+b')
    self.exporters = CsvItemExporter(self.file)
    self.exporters.start_exporting()

def spider_closed(self, spider):
    self.exporters.finish_exporting()
    self.file.close()

def process_item(self, item, spider):
    self.exporters.export_item(item)
    return item

Пожалуйста, помогите мне экспортировать все поля в файл CSV, используя CsvItemExporter , Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...