【问题标题】:Scrapy 1.0 - Getting return value after running from python scriptScrapy 1.0 - 从 python 脚本运行后获取返回值
【发布时间】:2015-09-30 16:27:27
【问题描述】:

我正在使用以下代码从 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

【问题讨论】:

    标签: python scrapy scrapy-spider


    【解决方案1】:

    嗯,解决方案是实现自定义项目管道以将结果存储在文件中 - 并稍后读取结果。

    或者,您也可以通过在 Scrapy 中配置导出来做到这一点。例如,将项目导出到名为 results.json 的文件中:

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

    为避免临时文件,您应该使用自定义管道类并在 spider_closed 信号上处理您的结果。

    更多详情可以参考这个答案:https://stackoverflow.com/a/23574703/3941341

    【讨论】:

    • 我不想从文件中读取结果。我要对象。有什么办法可以做到吗?
    • 请阅读我链接到的答案。它也描述了如何做到这一点。
    • 答案是旧版本的 Scrapy。它对我不起作用。
    • 你真的试过了吗?因为从发行说明中我看不到任何会影响此解决方案的更改。
    • 是的,我做到了。 crawler.py 发生了变化,Crawler 类也发生了变化。它现在需要一个 spidercls 以及设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多