我想从cron job执行我的scrapy爬虫。
我创建bash文件getdata.sh,其中scrappy项目与它的spider位于其中
#!/bin/bash
cd /myfolder/crawlers/
scrapy crawl my_spider_name
我的crontab如下所示,我希望每5分钟执行一次
*/5 * * * * sh /myfolder/crawlers/getdata.sh
但是它不起作用,出了什么问题,我的错误在哪里?
当我从终端sh /myfolder/crawlers/ www.example.com执行bash文件时getdata.sh,它工作正常
8条答案
按热度按时间velaa5lx1#
我解决了这个问题,包括路径到bash文件
oxiaedzo2#
在
crontab -e
中添加以下代码行可以让我每天早上5点进行scrappy爬行。如果不设置
$PATH
,cron将给予错误“未找到命令:Scrappy”.我猜这是因为/usr/bin是Ubuntu中存储运行程序的脚本的地方。注意,我的scrappy项目的完整路径是
/home/user/project_folder/project_name
,我在cron中运行了env命令,注意到工作目录是/home/user
,因此在上面的crontab中跳过了/home/user
cron日志在调试时很有帮助
inkz8wg93#
对于使用
pip3
(或类似版本)安装scrapy
的用户,这里有一个简单的内联解决方案:替换:
*/10 * * * *
与您的cron模式~/project/path
,带有scrappy项目的路径(scrapy.cfg
所在的位置)带有spider名称的
something
(在项目中使用scrapy list
来找出答案)~/crawl.log
与您的日志文件位置(如果您想要记录)byqmnocz4#
另一种选择是忘记使用shell脚本,直接在cronjob中将两个命令链接在一起。只需确保在crontab列表中的第一个scrappy cronjob之前设置PATH变量。
编辑和看看。我有几个scrapy爬虫运行在不同的时间。有些每5分钟,其他一天两次。
所有位于PATH变量之后的任务都会被发现是无用的。这里第一个任务每5分钟运行一次,第二个任务每天在凌晨1点和下午1点运行两次。我发现这更容易管理。如果你有其他的二进制文件要运行,那么你可能需要把它们的位置添加到路径中。
vcudknz35#
使用“which scrapy”命令检查scrapy安装在哪里。在我的例子中,scrapy安装在
/usr/local/bin
中。使用
crontab -e
.PATH=$PATH:/usr/local/bin export PATH */5 * * * * cd /myfolder/path && scrapy crawl spider_name
打开crontab进行编辑应该可以的,每五分钟一班.
nkcskrwz6#
你的shell脚本有执行权限吗?
你能做
不带嘘吗
如果可以,则可以在cron中删除行中的sh
31moq8wy7#
在我的情况下,scrapy位于**.local/bin/scrapy**中,请给予刮刀的正确路径,并将其命名为workperfect
0 0 * * * cd /主页/用户/scraper/scraper的文件夹/ && /主页/用户/.local/bin/剪贴爬网“名称”〉〉/主页/用户/剪贴.日志2〉&1
/home/user/scrapy.log用于保存scrapy.log中的输出和错误,以检查程序是否工作
谢谢您。
hwazgwia8#
我在一个raspberry pi操作系统上运行我的scrappy spider(Debian版本:11(靶心))。以下设置/工作流程对我起作用:
第一张cd到你的项目目录。在venv环境中安装scrappy,使用:
创建您的蜘蛛。
创建shell文件(getdata.sh),使用完整目录路径(包括/home/username/等):
使用
crontab -e
中的以下行在crontab中调度spider: