ubuntu Cron作业中的Scrapy Crawler

ztmd8pv5  于 2023-01-08  发布在  其他
关注(0)|答案(8)|浏览(127)

我想从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,它工作正常

velaa5lx

velaa5lx1#

我解决了这个问题,包括路径到bash文件

#!/bin/bash

cd /myfolder/crawlers/
PATH=$PATH:/usr/local/bin
export PATH
scrapy crawl my_spider_name
oxiaedzo

oxiaedzo2#

crontab -e中添加以下代码行可以让我每天早上5点进行scrappy爬行。

PATH=/usr/bin
* 5 * * * cd project_folder/project_name/ && scrapy crawl spider_name

如果不设置$PATH,cron将给予错误“未找到命令:Scrappy”.我猜这是因为/usr/bin是Ubuntu中存储运行程序的脚本的地方。
注意,我的scrappy项目的完整路径是/home/user/project_folder/project_name,我在cron中运行了env命令,注意到工作目录是/home/user,因此在上面的crontab中跳过了/home/user
cron日志在调试时很有帮助

grep CRON /var/log/syslog
inkz8wg9

inkz8wg93#

对于使用pip3(或类似版本)安装scrapy的用户,这里有一个简单的内联解决方案:

*/10 * * * * cd ~/project/path && ~/.local/bin/scrapy crawl something >> ~/crawl.log 2>&1

替换:
*/10 * * * *与您的cron模式
~/project/path,带有scrappy项目的路径(scrapy.cfg所在的位置)
带有spider名称的something(在项目中使用scrapy list来找出答案)
~/crawl.log与您的日志文件位置(如果您想要记录)

byqmnocz

byqmnocz4#

另一种选择是忘记使用shell脚本,直接在cronjob中将两个命令链接在一起。只需确保在crontab列表中的第一个scrappy cronjob之前设置PATH变量。

crontab -e

编辑和看看。我有几个scrapy爬虫运行在不同的时间。有些每5分钟,其他一天两次。

PATH=/usr/local/bin
    */5 * * * * user cd /myfolder/crawlers/ && scrapy crawl my_spider_name_1
    * 1,13 * * * user cd /myfolder/crawlers/ && scrapy crawl my_spider_name_2

所有位于PATH变量之后的任务都会被发现是无用的。这里第一个任务每5分钟运行一次,第二个任务每天在凌晨1点和下午1点运行两次。我发现这更容易管理。如果你有其他的二进制文件要运行,那么你可能需要把它们的位置添加到路径中。

vcudknz3

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进行编辑
应该可以的,每五分钟一班.

nkcskrwz

nkcskrwz6#

你的shell脚本有执行权限吗?
你能做

/myfolder/crawlers/getdata.sh

不带嘘吗
如果可以,则可以在cron中删除行中的sh

31moq8wy

31moq8wy7#

在我的情况下,scrapy位于**.local/bin/scrapy**中,请给予刮刀的正确路径,并将其命名为workperfect
0 0 * * * cd /主页/用户/scraper/scraper的文件夹/ && /主页/用户/.local/bin/剪贴爬网“名称”〉〉/主页/用户/剪贴.日志2〉&1

/home/user/scrapy.log用于保存scrapy.log中的输出和错误,以检查程序是否工作

谢谢您。

hwazgwia

hwazgwia8#

我在一个raspberry pi操作系统上运行我的scrappy spider(Debian版本:11(靶心))。以下设置/工作流程对我起作用:
第一张cd到你的项目目录。在venv环境中安装scrappy,使用:

python3 -m venv ./venv
source ./venv/bin/activate
sudo pip3 install scrapy

创建您的蜘蛛。
创建shell文件(getdata.sh),使用完整目录路径(包括/home/username/等):

#!/bin/bash
#activate virtual environment
source "/full/path/to/project/venv/bin/activate"

#move to the project directory 
cd /full/path/to/project/

#start spider
scrapy crawl my_spider_name

使用crontab -e中的以下行在crontab中调度spider:

*/5 * * * * /full/path/to/shfile/getdata.sh

相关问题