如何使用scrapy命令动态创建Feed Export的文件名

时间:2017-05-11 11:41:40

标签: linux scrapy

这是运行我的刮刀的命令。

scrapy crawl monitor -a filename="ScrapeProject.csv" -o filename.csv

它会运行并将已删除的数据保存到filename.csv

我想安排为cronjob我希望filename.csv成为刮刀运行的当前日期时间。

我尝试了后退但没有工作

scrapy crawl monitor -a filename="ScrapeProject.csv" -o `date`.csv

也尝试过那样

scrapy crawl monitor -a filename="ScrapeProject.csv" -o "date".csv

编辑:

以下是我在@dps推荐时运行的命令,但它会提示我输入内容?

root@ubuntu:/home/mani/pricemonitor# scrapy crawl monitor -a filename="ScrapeProject.csv" -o `date +\%m`.`date +\%d`.`date +\%y`.csv`
> 
>

2 个答案:

答案 0 :(得分:3)

你没有尝试在你的cron作业中对date命令应用任何格式吗?你需要逃避cron的百分号,即

`date +\%m`.`date +\%d`.`date +\%y`.tar.gz

请参阅:Percent sign % not working in crontab

此外,当您不使用cron(勾选`date`)时,它是否可以从命令行运行?

答案 1 :(得分:2)

Scrapy Feed Exports也能理解(某些内置的)storage URI parameters开箱即用。

%(time)s就是其中之一。

所以你可以这样做:

scrapy crawl monitor -a filename="ScrapeProject.csv" -o '%(time)s.csv'

将以YYYY-mm-ddTHH-MM-SS的形式创建输出文件,例如2017-05-11T12-12-18.csv

在内部,time is converted使用datetime.utcnow().replace(microsecond=0).isoformat().replace(':', '-')

注意:您可以在Feed URI中使用任何spider属性(使用-o设置的内容)。请记住,any spider argument(您可以添加到-a key=value的命令行中的内容)将作为spider参数(作为字符串)提供。