Как экспортировать очищенные элементы в виде списка словарей в Scrapy

#python #web-scraping #scrapy

#питон #соскабливание паутины #скребок

Вопрос:

Я сделал скребковый код, в котором 4 сканера очищают данные с 4 разных веб-сайтов электронной коммерции. Для каждого искателя я хочу вывести 5 продуктов с самыми низкими ценами с каждого веб-сайта и экспортировать их в один CSV-файл.

Прямо сейчас мой основной код выглядит так:

 process = CrawlerProcess() process.crawl(Crawler1) process.crawl(Crawler2) process.crawl(Crawler3) process.crawl(Crawler4) process.start()  

Я хочу, чтобы каждый искатель возвращал список словарей, чтобы я мог перебирать его с помощью цикла for и сравнивать цены.

Нужно ли для этого использовать конвейер Scrapy? Как я могу сделать так, чтобы Scrapy возвращал список очищенных элементов(который находится в словаре) вместо того, чтобы просто экспортировать их в файл?

Ответ №1:

Вот пример с каким-то пауком из другого поста, я передал имя паука функции, но вы можете настроить его в соответствии с вашими потребностями:

 from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings from scrapy.signalmanager import dispatcher from scrapy import signals   def spider_output(spider):  output = []   def get_output(item):  output.append(item)   dispatcher.connect(get_output, signal=signals.item_scraped)   settings = get_project_settings()  settings['USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'  process = CrawlerProcess(settings)  process.crawl(spider)  process.start()  return output   if __name__ == "__main__":  spider = 'vdsc'  print(spider_output(spider))