python“学习强国”任务自动化(三)利用linux的crontab自动维护数据库中的爬虫数据

总的思路:先将项目部署到我的腾讯云虚拟主机中,然后在该台虚拟主机中设置定时任务。这个定时任务的内容就是去执行一个shell脚本,shell脚本的内容是去执行上一篇写好的爬虫程序来维护数据库并将输出结果利用git相关命令push到仓库中。

一、一些基础知识

1.1 linux的时间表
  1. crontab程序是类unix系统中用于周期性执行被指定的命令的程序。
  2. 命令用法的简单介绍
#编辑当前用户的时间表程序
crontab -e

#查看当前用户的已经制定好的时间表
crotab -l

#重启crond,以使时间表生效
systemctl restart crond

3.crontab的格式
* * * * * user command

1.2 shell编程
  1. 需要掌握shell编程的基本语法。
  2. 需要掌握linux下常见的命令
1.3 github的使用
  1. 如何在将gihub仓库部署到linux上,日后会写这篇(待补充)。
  2. 完成部署后提交部分文件到github仓库
# 初始化本地git仓库,只需要进行一次,执行成功后会在当前目录生成一个git的隐藏目录。
git init
# 将项目的某个文件添加到仓库中,若我们需要上传的不是目录而只是一个文件,需要用f选项。
git add -f file
# 添加本次改动的说明内容
git commit -m "text"
#将本地的仓库关联到github上对应的仓库,后面的link是github上对应的仓库的.git地址
git remote add origin link
#上传前pull一下,拿到该项目最新的版本
git pull origin master
#origin是本地仓库的缺省命名,master是远程仓库的master分支。
git push -u origin master

二、编写shell脚本

2.1 目录结构

我设想的目录结构是这样的:

[root@tysonscloud QIANGGUO]# tree .
.
|-- __init__.py
|-- linux_crontab
|   `-- scripts | `-- QGNews_maintain.sh
|-- python项目(一)数据库设计.xls
|-- QGNews_maintain_log
|   `-- 2019-02-06 | `-- 2019-02-06_16:08.log
`-- scrapy |-- __init__.py |-- news_scrapy.py |-- news.sqlite `-- test_02.py
  • shell脚本存放在linux_crontab文件夹中,而每天的日志存放在QGNews_maintain_log目录中。
  • 并且每天都要用单独的文件夹来存放日志 。
2.2 shell脚本
baseLogdir=/root/QIANGGUO/QIANGGUO/QGNews_maintain_log
everydayLog=$baseLogdir/$(date +%F)/
[ ! -d "$everydayLog" ] && mkdir -p $everydayLog
#判断每日的日志文件存放的目录是否存在

nowtime=`date +%F_%H:%M`
#多条程序的执行时间是有时间差的,为了避免出现push命令执行时已经到了第二分钟,程序需要一个确定的时间

python /root/QIANGGUO/QIANGGUO/scrapy/news_scrapy.py >$everydayLog/${nowtime}.log 2>&1
#创建每次维护的记录

git init
git add -f $everydayLog/${nowtime}.log
git commit -m "这是${nowtime}的维护日志,由crontab程序自动创建"
git remote add origin [email protected]:chinaltx/QIANGGUO.git
git pull origin master
git push -u origin master
#把每次维护的记录push到github
  • shell脚本写完后记得先进行测试:bash /root/QIANGGUO/QIANGGUO/linux_crontab/scripts/QGNews_maintain.sh

三、设置crontab程序

  • crontab -e:进行编辑
0 */8 * * * cd /root/QIANGGUO/QIANGGUO/;bash linux_crontab/scripts/QGNews_maintain.sh`,每天的8点整、16点整、24点整会执行维护程序。
  • crontab -l:检查
  • systemctl restart crond:让crond任务生效。

四、github地址

  1. https://github.com/chinaltx/QIANGGUO
  2. 最后说一下思路:
  • 这几天写好rest风格的后台接口。
  • 再用python的GUI写一个桌面应用,这个桌面应用可以拿到每天最新的新闻数据,然后自动调用浏览器去执行(使用自动化测试框架实现),并且不会重复观看,除此之外就是一些搜索功能。
  • 再之后就是把学习强国网页版的整套api拿下来,通过提交请求的方法去告诉服务器我看了这篇文章,这样就可以把这一套程序移植到微信公众号上了。
  • 新手,边学边开发,还请急需这种程序的童鞋多多包容…

你可能感兴趣的:(python项目练习)