Как экспортировать переменную clean_data на следующий уровень, используя структуру данных в памяти?Python

Программы на Python
Anonymous
Как экспортировать переменную clean_data на следующий уровень, используя структуру данных в памяти?

Сообщение Anonymous »


Я создал парсер для сбора данных с веб-сайта, он работает совершенно нормально. Раньше я хранил данные в двух отдельных файлах json: raw_data.json и clean_data.json. Но сейчас я пытаюсь объединить парсер с фреймворком моей компании, а в процессе фреймворка нет локального хранилища. Итак, я пытаюсь экспортировать данные, используя структуру данных в памяти, которая передает переменные raw_data и clean_data на следующий шаг. Я уже сделал скребок пакетом. Итак, импорт прошел хорошо, но когда я проверил его запуск, результат оказался пустым. Я уже несколько дней застреваю в этом вопросе, так есть ли выход?

Вот часть моего файла Pipelines.py

класс RawDataPipeline: защита __init__(сам): self.raw_data = [] defprocess_item(я, предмет, паук): # Проверка основных данных: проверьте, не пуст ли очищенный элемент. адаптер = ItemAdapter(элемент) если адаптер.get('project_source'): self.raw_data.append(adapter.asdict()) вернуть изделие def close_spider(я, паук): """ с open('raw_data.json', 'w',encoding='utf-8') как файл: json.dump(self.raw_data, файл, отступ = 2, обеспечения_ascii = False) """ Spider.crawler.signals.send_catch_log(signal=spider.custom_close_signal, raw_data=self.raw_data) вернуть self.raw_data класс CleanedDataPipeline: защита __init__(сам): self.cleaned_data = [] self.list_dic = {} defprocess_item(я, предмет, паук): очищенный_элемент = self.clean_item(предмет) self.cleaned_data.append(cleaned_item) вернуть изделие def close_spider(я, паук): # Преобразование значений в список для ключей в list_dic для ключа в self.list_dic: для очищенного_элемента в self.cleaned_data: self.convert_to_list(cleaned_item, ключ) #with open('cleaned_data.json', 'w',coding='utf-8') как файл: # json.dump(self.cleaned_data, file, indent=2, обеспечения_ascii=False) # Журнал list_dic #spider.log("List_dic: %s" % json.dumps(self.list_dic, indent=2, обеспечения_ascii=False)) Spider.crawler.signals.send_catch_log(signal=spider.custom_close_signal, clean_data=self.cleaned_data) вернуть self.cleaned_data А это скрипты Python, в которых я запускаю паука и пытаюсь получить данные, когда паук закрыт

def Spider_closed(сигнал, отправитель, **kwargs): # Доступ к данным после закрытия паука raw_data = RawDataPipeline().raw_data очищенные_данные = ОчищенныйКонвейерДанных().Очищенные_данные print("Необработанные данные:", raw_data) print("Очищенные данные:", очищенные_данные) защита run_spider(): # Создайте процесс сканирования процесс = CrawlerProcess (настройки) # Подключите сигнал Spider_closed к вашей функции обратного вызова диспетчер.connect(spider_closed, сигнал=signals.spider_closed) # Добавьте своего паука в процесс process.crawl(NieuwbouwspiderSpider) # Запускаем процесс сканирования процесс.start() run_spider() Это не работает, распечатанные результаты просто пусты. Есть ли решение?

Вернуться в «Python»