使用 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
将任何命令输出发送到的地址,如果您的系统上未配置外发电子邮件,这将很有用。
我是使用 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
将任何命令输出发送到的地址,如果您的系统上未配置外发电子邮件,这将很有用。