Scrapy 1.0 – получение возвращаемого значения после запуска из скрипта python

Я использую приведенный ниже код для запуска своего сканера из скрипта Python:

import scrapy
from scrapy.crawler import CrawlerProcess

process = CrawlerProcess()

process.crawl(MySpider)
process.start() # the script will block here until the crawling is finished

где мой MySpider возвращает объект.

Как я могу получить возвращаемое значение из этого? Пожалуйста, имейте в виду, что это Scrapy 1.0. Все примеры, которые я нашел, относятся к более старым версиям Scrapy.

Приведенный выше код взят из: http://doc.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script


person Random 102    schedule 12.07.2015    source источник


Ответы (1)


Что ж, решением было бы реализовать пользовательский конвейер элементов для сохранения ваших результатов в файле и чтения результатов позже.

В качестве альтернативы вы также можете сделать это, настроив экспорт в Scrapy. Например, экспортируйте элементы в файл с именем results.json:

settings.overrides['FEED_FORMAT'] = 'json'
settings.overrides['FEED_URI'] = 'results.json'

Чтобы избежать временного файла, вы должны использовать собственный класс конвейера и обрабатывать свои результаты по сигналу spider_closed.

Вы можете обратиться к этому ответу для получения более подробной информации: https://stackoverflow.com/a/23574703/3941341

person GHajba    schedule 12.07.2015
comment
Я не хочу читать результаты из файла. Я хочу объект. Есть ли способ это сделать? - person Random 102; 12.07.2015
comment
Пожалуйста, прочитайте ответ, на который я ссылаюсь. Там же описано, как это сделать. - person GHajba; 12.07.2015
comment
Ответ для более старой версии Scrapy. Это не работает для меня. - person Random 102; 12.07.2015
comment
Вы пробовали это на самом деле? Потому что из примечаний к выпуску я не вижу никаких изменений, которые повлияли бы на это решение. - person GHajba; 12.07.2015
comment
Да, я сделал. Crawler.py изменился, как и класс Crawler. Теперь он нуждается в spidercls вместе с настройками. - person Random 102; 12.07.2015
comment
Это действительно работает, если я удаляю устаревшие вещи. blog.tryolabs.com/2011/09/27/calling -scrapy-python-script - person Random 102; 12.07.2015