一、代码
import requests
from lxml import etree
from datetime import datetime
import time
import os
i=0
while True:
url = "http://10.60.2.10/yjnw/zxgg/index.jhtml"
try:
content = requests.get(url).content
html = etree.HTML(content)
#title = html.xpath("/html/body/div[5]/div[1]/div[1]/div[1]/ul/li[0]//text()")
title = html.xpath("/html/body/div[5]/div[2]/div[2]/div[2]//text()")
#获取第一篇文章标题
lines=title[3].split("\n")
print("当前第一条通知:"+lines[0])
#屏幕打印获取的第一篇文章标题
if not os.path.isfile("/home/cbirc/title_temp.txt"):
#判断title_temp.txt文件是否存在,不存在则创建,并写入获取的第一篇文章标题
f = open("/home/cbirc/title_temp.txt", "w")
f.write(str(title[3]))
print("将当前标题记录在title_temp.txt中,等待检测")
f.close()
else:
#title_temp.txt文件存在的话,提取里面标题,和获取的标题对比
with open("/home/cbirc/title_temp.txt", "r+") as f2:
old_title = f2.readline().split("\n")
#old_title = f2.readline().rstrip()
print("旧的第一条通知:"+old_title[0])
#print("旧的第一条通知:"+old_title)
if str(old_title[0]).encode('utf-8') != str(lines[0]).encode('utf-8'):
#if str(old_title).encode('utf-8') != str(lines[0]).encode('utf-8'):
#如果读取内容和获取的网站第一篇文章标题不一致,则表明网站更新
print("网站有更新,需通知")
os.system("notify-send --expire-time=3600000 有新的内网通知")#发送通知
print(datetime.now())
i=i+1
print(i)
time.sleep(30)
f2.seek(0)
f2.truncate()
f2.write(str(lines[0]))
f2.close()
#写入最新的标题内容,方便下一次比对
#break
#退出循环
else:
#否则的话,表明网站没有更新
f2.close()
print("网站暂时没有更新")
print(datetime.now())
#os.system("notify-send --expire-time=60000 无新的通知")#发送通知
i=i+1
print(i)
time.sleep(30)
#检测网页内容时间间隔,单位为秒(s)
except Exception as e:
print(e)
continue
二、通过编写service的方法,使用systemctl配置开机自启
将程序启动命令写入service,通过下面的命令配置开机自启动
systemctl enable XXX.service
注:XXX为service前缀名称
首先编写nei2的service文件,并放在/lib/systemd/system/文件夹下面
内容如下
#save as nei2.service
[Unit]
Description=nei2 Service
After=network.target
[Service]
ExecStart=/home/cbirc/nei2.sh
[Install]
WantedBy=default.target
ExecStart后面添加开机需要运行的命令配置完成后更新并添加开机自启动
这里nei2.sh就一行
#!/bin/sh
/usr/bin/python3 /home/cbirc/nei2.py
sudo systemctl daemon-reload
sudo systemctl restart nei2.service
sudo systemctl enable nei2.service