在写入本地文件系统时,Scrapy的Feed导出如何工作?

时间:2017-01-28 20:03:33

标签: python scrapy

我目前在AWS EC2实例的屏幕会话中有一个长时间运行的Python脚本,它执行

之类的命令
from subprocess import call 

call('''scrapy crawl my_spider -a year=2005 -a month=may 
--set FEED_URI=/home/ubuntu/my_spider/data/2005_may.json 
--set FEED_FORMAT=jsonlines''', shell=True)

超过2000 - 2017年和10月至6月的所有年,月的组合。许多单独的命令已经完成,我可以重新连接到屏幕会话并看到它正确地抓取数据,但我在/home/ubuntu/my_spider/data中看不到任何文件。

文件会在Python脚本完成后显示,还是应该立即停止,因为出现了问题?

2 个答案:

答案 0 :(得分:1)

当抓取工具启动spider时,

FileFeedStorage会打开文件,因此如果输出文件在启动后没有显示,则显示出现了问题。

答案 1 :(得分:1)

严格地说,这不能回答原来的问题,但仍值得一提。问题是call没有正确解析FEED_URIFEED_FORMAT选项,因此没有将抓取的数据写入指定的文件。为什么这不会以某种方式传播回来,我不知道。将其更改为

call(["scrapy", "crawl", "my_spider", 
  "-a", "year=2005", 
  "-a", "month=may", 
  "--set",  "FEED_URI=/home/ubuntu/my_spider/data/2005_may.json",
  "--set", "FEED_FORMAT=jsonlines"], cwd="/home/ubuntu/my_spider/")

工作,但应该说从脚本运行Scrapy不是suggested practice