教你如何使用Linux中的curl神器定时爬取数据并批量发到别人邮箱

一. 爬取APP数据,并且存放到一个临时的文件gold中去,这是最原始的数据

curl 'https://ai.cmbchina.com/MBWebService/AjaxMetModuleInfo.ashx?pageID=C8455BD9-8AD4-4B56-A193-22142C9EB3C1&moduleID=AC730DC5-8F5F-46BE-9DB4-9273E26205EC&ModuleName=MetPrc&randnum=0.21273008013564'  > /tmp/gold

在这里插入图片描述

二.解析数据,将数据中有用的内容通过jq解析出来

(关于jq的使用的方法这里不做介绍)

cat /tmp/gold | jq '{name:.scrollpgoldmsg[0].prdName,price:.scrollpgoldmsg[0].latestPrice,down:.scrollpgoldmsg[0].upDownValue,code:.scrollpgoldmsg[0].prdCode,range:.scrollpgoldmsg[0].upDownRange}'  >> /tmp/gold_price.txt
cat /tmp/gold | jq '{name:.scrollpgoldmsg[1].prdName,price:.scrollpgoldmsg[1].latestPrice,down:.scrollpgoldmsg[1].upDownValue,code:.scrollpgoldmsg[1].prdCode,range:.scrollpgoldmsg[1].upDownRange}'  >> /tmp/gold_price.txt
cat /tmp/gold | jq '{name:.scrollpgoldmsg[2].prdName,price:.scrollpgoldmsg[2].latestPrice,down:.scrollpgoldmsg[2].upDownValue,code:.scrollpgoldmsg[2].prdCode,range:.scrollpgoldmsg[2].upDownRange}'  >> /tmp/gold_price.txt

在这里插入图片描述

三.发送邮件,既然已经得到了爬取到的数据,接下来就是将内容发送给用户

# 先定义了一些相当于全局变量的东西,方便下面的修改
MAIL_FROM='xxxxxx@qq.com'    # 发件人
MAIL_SUBJECT='the_gold_price'   # 邮件主题
MAIL_CONTENT=`cat /tmp/gold_price.txt`  # 邮件的正文内容
MAIL_CONTENT_FILE="/tmp/today_gold_price.txt"   # 临时存放邮件内容的文件
MAIL_SMTP='smtp://smtp.qq.com'    #使用的邮箱服务器地址
MAIL_USER='xxxxxx@qq.com'   # 此处应当填写自己想要用来发送邮件的邮箱的地址
MAIL_PASSWORD='xxxxxx'    # 获取的邮箱授权密码
USER_LIST='/home/lk/Downloads/SHELL/CURL_App_Example/users.txt'
# 上面的USER_LIST填写的是事先存好的目标客户的邮箱账号的文档(要写绝对路径)
# 循环读取用户列表,向每一个用户发送邮件
cat ${USER_LIST} | while read MAIL_TO
do    
# 创建邮件内容
	echo "From:${MAIL_FROM}
	To:$MAIL_TO
	Subject:$MAIL_SUBJECT

	$MAIL_CONTENT "> ${MAIL_CONTENT_FILE}
	# 发邮件
	curl --verbose -s --url "${MAIL_SMTP}" --mail-from "${MAIL_FROM}" --mail-rcpt ${MAIL_TO} --upload-file ${MAIL_CONTENT_FILE} --user "${MAIL_USER}:${MAIL_PASSWORD}" 
done

# 删除所有的临时文本
rm ${MAIL_CONTENT_FILE}
rm /tmp/gold
rm /tmp/gold_price.txt

四.整理代码脚本

首先,将上述所有代码整理好,比如说统一放到一个叫做send_mail.sh的脚本中,再准备一个存有所有目标客户的邮箱地址的的users.txt文档(一个邮箱地址一行) 这里一定要记得文件的绝对路径地址,不清楚的可使用pwd 命令查看当前所在目录。【完整代码在文末有链接】

五.设置定时任务

1.~~$ crontab –l 命令来查看系统是否已经安装crontab,若已经安装,则出现下图

在这里插入图片描述
若没有安装,使用~~$ sudo apt-get install cron 下载安装即可。

2.~~$ crontab –e 使用该命令设置自己的定时任务

在这里插入图片描述
第一次进入使用应该是这样的
在这里插入图片描述
选择编辑器,这里选择2
之后在进入便不会再次选择,在末尾加入的这一行表示在每天下午19:44执行后面目录下的脚本(注意也是绝对路径)
在这里插入图片描述
这里根据注释中的提示简单解释一下这句话的含义:
在这里插入图片描述
m h dom mon dow command 分别是(minute; hour; day of month; month; day of week)的缩写
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
需要注意的是在编写command指令之前要在终端进行测试是否能够执行。

3.开启cron服务,使用命令为:sudo service crond start

开启后可以查看此时的状态,使用命令sudo service crond status 即可查看,根据途中标红的命令行便可以知道,已经执行了定时任务
在这里插入图片描述
另外通过 crontab –l 命令也可以查看锁着定的定时任务
在这里插入图片描述

下面介绍一下定时任务服务相关的操作命令:

crontab -l              //查看设置的所有定时任务
sudo service cron start     //启动服务
sudo service cron stop      //关闭服务
sudo service cron restart   //重启服务

注意:若是发现定时任务执行了,但是似乎没有作用,第一反应便是查看脚本中的路径问题一定得是绝对路径,若是依旧有问题,发现还有图中这条命令,可以尝试sudo apt-get install -y postfix 下载postfix

在这里插入图片描述
源码地址(send_mail.sh即是):https://gitee.com/lk0423/shell_script

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是lk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值