37,720
社区成员
发帖
与我相关
我的任务
分享
import requests #引入包,python命令行执行 pip install requests
import os
import datetime
import time
# -*- coding: utf-8
from color import Color
class listener:
website_dict = None
#初始化时,读取所有网址记录
def __init__(self):
file = open(os.path.dirname(__file__) + "//website.hz",encoding='gbk')
self.website_dict = eval(file.readlines()[0])
#更新地址
def update_website(self):
file = open(os.path.dirname(__file__) + "//website.hz",'w+')
file.write(str(self.website_dict))
file.close()
#连接单一网站
def connect_website(self, website):
r = requests.get(website)
return r.headers
#测试连接是否正常
def connect_test_website(self,website):
try:
self.connect_website()
except:
print('连接失败')
#连接所有网站
def connect_all_website(self):
log = ''
error_log = ''
for website in self.website_dict:
try:
r = requests.get(website['site'])
time.sleep(3)
except:
#连接失败,可发送短信
error_log = error_log + self.get_time() + ' ' + website['name'] + '连接失败' + '\n'
Color().print_red_text(self.get_time() + ' ' + website['name'] + '连接失败')
else:
if(r.status_code == 200):
log = log + self.get_time() + ' ' + website['name'] + '连接成功' + '\n'
print(self.get_time() + ' ' + website['name'] + '连接成功')
else:
#status_code但是网页有内容的
if(len(r.content) > 100):
log = log + self.get_time() + ' ' + website['name'] + '连接成功,存在前端防护设备' + '\n'
print(self.get_time() + ' ' + website['name'] + '连接成功,存在前端防护设备')
else:
print(r.status_code)
error_log = error_log + self.get_time() + ' ' + website['name'] + '连接异常,请及时检查' + '\n'
Color().print_red_text(self.get_time() + ' ' + website['name'] + '连接异常,请及时检查')
self.save_log(log)
self.save_error_log(error_log)
#取得当前时间
def get_time(self):
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
#写日志
def save_log(self, log):
#每天一个独立日志
file_name = datetime.datetime.today().strftime("%Y%m%d") + '.log'
file = os.path.abspath(os.path.dirname(__file__) + "//" + file_name)
self.write(log, file)
def save_error_log(self, log):
#每天一个独立错误日志
file_name = datetime.datetime.today().strftime("%Y%m%d") + 'error.log'
file = os.path.abspath(os.path.dirname(__file__) + "//" + file_name)
self.write(log,file)
def write(self, log, file):
file_name = datetime.datetime.today().strftime("%Y%m%d") + 'error.log'
file = open(file, 'a+', encoding='gbk')
file.write(log)
file.flush()
file.close()
#循环执行任务
def start_listener(self,seconds):
while True:
self.connect_all_website()
time.sleep(seconds)
#初始化程序
def init(self):
while True:
minute = input('请输入间隔运行时间,单位(分钟):')
if minute.isdigit():
break
else:
print('输入的格式不正确请重新输入')
self.start_listener(int(minute))
if __name__ == '__main__':
listener().init()