我目前在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脚本完成后显示,还是应该立即停止,因为出现了问题?
答案 0 :(得分:1)
FileFeedStorage
会打开文件,因此如果输出文件在启动后没有显示,则显示出现了问题。
答案 1 :(得分:1)
严格地说,这不能回答原来的问题,但仍值得一提。问题是call
没有正确解析FEED_URI
和FEED_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。