使用 scrapy 和 crontab 安排抓取

scheduling crawling using scrapy with crontab

我是使用 crontab 的新手,我只是尝试阅读文章如何每 5 分钟使用 scrapy 自动安排爬行,还有一些文章建议使用 crontab ... 但我不知道如何实现正确的脚本...

这里是我的 .sh 文件

#!/bin/sh
cd /home/kautsar/Downloads/thehack
scrapy crawl thehack

我已经 +x 到文件 runScrapy.sh

但是当我尝试使用

crontab -e
*/5**** cd /home/kautsar && sh runScrapy.sh

然后当我按下输入按钮时,结果是“?” 有人知道这是什么意思吗?你能解释一下吗? 请告诉我定期进行网络爬行的正确方法,时间由我设置。非常感谢

我怀疑您的默认编辑器被设置为 ed。不知道为什么。如果是这种情况,您可以阅读如何使用 man ed 命令,但最好将系统配置为使用您喜欢的编辑器。我们假设是 vim。如果不是,请将 vim 替换为适当的名称。

export EDITOR=vim
crontab -e

此时,您应该在您最喜欢的编辑器中编辑 crontab 文件。我建议您向文件中添加类似于以下内容的注释。我总是这样做是为了提醒自己所有的列都对应着不同的星号。 DoM 是星期几 (1-31),DoW 是星期几(0-7 或 Sun/Mon/Tue,等等)。然后您的 shell 脚本作为完全限定的文件名(因此您不需要 cd 和脚本调用)。

# min hr DoM mon DoW cmd
  */5 *  *   *   *    sh /home/kautsar/runScrapy.sh

此时,您应该可以像使用编辑器一样保存并退出。

crontab 文件中还有其他陷阱等着您。阅读 man 5 crontab 并特别注意 PATH 和 HOME 的定义。 cron 在简化环境中运行,而不是您的登录环境,因此有时需要设置 PATH 变量。您可能会发现将 $HOME 设置为您的主目录很有用。例如,您的命令可以是 $HOME/runScrapy.sh。最后,您可以将 MAILTO 设置为 cron 将任何命令输出发送到的地址,如果您的系统上未配置外发电子邮件,这将很有用。