Scrapy -- 从脚本调用scrapy时,如何立即将字典返回给进程,而不是导出到json文件

Posted

技术标签:

【中文标题】Scrapy -- 从脚本调用scrapy时,如何立即将字典返回给进程,而不是导出到json文件【英文标题】:Scrapy -- When calling scrapy from script, how to return a dictionary to the process immediately, instead of export to json file 【发布时间】:2015-06-06 17:58:52 【问题描述】:

The official tutorial指定如何在python脚本中调用scrapy的方式

通过更改以下设置属性:

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

我能够将抓取的数据存储在 json 文件中。

但是,我正在尝试处理并返回在我定义的函数中立即抓取的数据。因此,其他函数可以调用这个包装函数来报废一些网站。

我认为FEED_URI 肯定有一些设置可以玩,但我不确定。任何建议将不胜感激!

【问题讨论】:

创建管道?见this answer(非官方教程)。 【参考方案1】:

Feed 导出旨在序列化您抓取的数据(请参阅feed export documentation)。您正在尝试做的事情不涉及序列化。

您想要做的是创建一个pipeline。 Scrapy 会将抓取的Items 传递给管道。它们是字典,你可以用它们做任何你想做的事情。

【讨论】:

以上是关于Scrapy -- 从脚本调用scrapy时,如何立即将字典返回给进程,而不是导出到json文件的主要内容,如果未能解决你的问题,请参考以下文章

从crontab调用scrapy项目时如何避免“找不到模块”错误?

Scrapy 使用 crawlerprocess 运行时抛出错误

从脚本运行scrapy,不包括管道

如何在Scrapy CrawlSpider中找到当前的start_url?

从脚本scrapy运行蜘蛛

『Scrapy』终端调用&选择器方法