有了它,周报可以这样发...

工作经常会遇到周报,月报,这些定期要发送的文件,甚至还有每天都要发送的东西,本来分析规则都写好了,可是还要每天发送就特别烦人了。我正好手上的几个爬虫,都是一周要一次数据的,我也就每天手动运行下就好了,结果最近要求每天都要。这不是增加我的工作量了吗? 直接上服务器,每天定时运行去。

一、 环境

  • ubuntu 16.04
  • scrapy
  • requests

二、怎么才能定时运行呢?

这就要用到ubuntu的定时任务crontab了,其实和pc的是一样的,只是这个是命令行的操作. 感觉比pc方便了不少。
首先开启cron服务,然后编辑任务,首次开启编辑时,会要求我们选择编辑器。这里选择2,使用vim,vim使用很方便,不过新手可能要熟悉下使用方法,上手之后会很快。

《有了它,周报可以这样发...》

添加新的内容,比如:*/1 * * * * date >> $HOME/test.txt

《有了它,周报可以这样发...》

配置好内容,重启服务。定时任务就可以运行了。

常用命令如下:

sudo  service cron status # 查看cron的状态
sudo /etc/init.d/cron start  # 开启cron
sudo /etc/init.d/cron stop  # 关闭cron

crontab -e # 配置任务
# 打开的文件里有说明,格式是分 时 天 月 星期 命令
*/1 * * * * date >> $HOME/test.txt # 表示每过一分钟,把日间写入$HOME/test.txt 
sudo service cron restart  # 配置好了,可以重启cron生效
sudo /etc/init.d/cron restart  # 重启服务

三、运行爬虫的脚本

为了能运行爬虫任务,我们可以创建一个bash脚本文件crawl.sh, 内容如下:

#! /usr/bin/env bash
cd scrapy_path # 进入爬虫所在文件夹
scrapy crawl 爬虫名 # 注意scrapy命令要是绝对路径,不清楚可以用which scrapy查看

创建好后就可以利用cron定时运行了,在cron里编辑内容30 7 * * * /home/steven/crawl.sh, 注意要用绝对路径。

四、怎么检查定时任务有没有运行

定时任务创建好后,可是爬虫没有运行怎么办?这时就需要检查定时任务到底有没有运行了,使用如下命令我们就可以进行检查了。

pgrep cron #可以查看cron的进程
tail /var/log/cron.log # 直接查看日志
sudo cat /var/log/syslog | tail # 如果上面的命令说没有文件,则可以通过这个命令查看
sudo cat /var/log/syslog | grep cron | tail #也可以通过这个命令筛选下

后记

写了这么多,好像没有说周报怎么发呀?其实我们完全可以利用服务器的邮件发送功能,把我们生成好的爬虫数据定时发送出去。发挥你的聪明才智吧,如果还有不懂的同学,欢迎加我微信或者关注我的公众号。

点赞
关注极客数据微信公众号

发表评论

电子邮件地址不会被公开。 必填项已用*标注