import requests from bs4 import BeautifulSoup import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import time import logging # 配置日志 logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(message)s") # 配置邮件发送函数 def send_email(subject, body, to_email): # 邮件服务器配置 smtp_server = "smtp.lcdd.net" smtp_port = 587 from_email = "admin@lcdd.net" password = "lichao1314" # 构建邮件 msg = MIMEMultipart() msg["From"] = from_email msg["To"] = to_email msg["Subject"] = subject msg.attach(MIMEText(body, "plain")) # 连接到服务器并发送邮件 try: with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() server.login(from_email, password) server.sendmail(from_email, to_email, msg.as_string()) logging.info("邮件已发送到 %s", to_email) except Exception as e: logging.error("邮件发送失败: %s", e) # 配置爬虫任务 def check_website_for_condition(url, keyword): try: response = requests.get(url) response.raise_for_status() # 确保请求成功 soup = BeautifulSoup(response.text, "html.parser") # 搜索关键词 if keyword in soup.get_text(): logging.info("检测到关键词: %s", keyword) return True else: logging.info("关键词 %s 不存在", keyword) return False except Exception as e: logging.error("请求失败: %s", e) return False # 主调度函数 def monitor_website(): url = "https://lcdd.net" # 目标网址 keyword = "React" # 目标关键词 to_email = "randolphreidhdu@gmail.com" # 收件人邮箱 # 监控循环 while True: if check_website_for_condition(url, keyword): subject = "关键词检测通知" body = f"目标网站 {url} 上检测到关键词 '{keyword}' 出现!" send_email(subject, body, to_email) break # 如果检测到条件,发送一次邮件并退出循环 # 未检测到条件时,延迟一段时间再次检查 time.sleep(300) # 每5分钟检查一次 # 启动监控 if __name__ == "__main__": monitor_website()