校曆已經做到個人日曆,但今天開會時突然想到,萬一源網頁 https://pkuschool.yuque.com/xqt6kg/gq1l46/wgq3l8qg6inpcuvx#yQ8r 被修改了,個人日曆是不能自動更新的。指望seiue的通知肯定是不成的。
GPT-4說:
1. **使用网页监控工具**:市面上有很多网页监控工具,例如 Distill.io、Visualping 等,它们可以帮助您监控特定网页的变化,并在检测到更新时通过电子邮件或其他方式通知您。这些工具通常提供一定程度的自定义,比如监控频率、监控区域的选择等。
2. **浏览器插件**:一些浏览器插件也提供了类似的监控功能。您只需要在浏览器中安装这些插件,然后设置您想要监控的网页即可。
3. **开发自定义脚本**:如果您有编程能力,也可以编写自定义的脚本来监控网页变化。这种方法的好处是可以完全按照您的需求定制监控逻辑,比如监控特定的内容变化、将变化记录到数据库中等。Python 的 Beautiful Soup 和 Requests 库是进行此类任务的常用工具。
4. **RSS 订阅**:如果该网页支持 RSS 订阅,您可以使用 RSS 阅读器订阅其更新。不过,这取决于网页是否提供 RSS 功能。
每种方法都有其优缺点,您可以根据自己的具体需求和技术背景选择最适合的方案。如果您希望对某个方案了解更多细节或需要帮助实现,我可以提供进一步的指导。
手頭性能最低的那台VPS一直相當閒,正好,它也該開個學了。
步骤 1: 检查 Python 安装
python3 --version
步骤 2: 安装 requests 和 BeautifulSoup:
sudo apt update
sudo apt install python3-pip
pip3 install requests beautifulsoup4
步驟3:
nano /root/web_monitor.py
粘貼:
import requests
from bs4 import BeautifulSoup
import hashlib
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 目标网页 URL
url = "https://pkuschool.yuque.com/xqt6kg/gq1l46/wgq3l8qg6inpcuvx#yQ8r"
# 发送 HTTP GET 请求
response = requests.get(url)
# 使用 BeautifulSoup 解析 HTML 内容
soup = BeautifulSoup(response.text, 'html.parser')
# 提取网页主体或特定部分作为内容
content = soup.get_text()
# 计算内容的哈希值
content_hash = hashlib.sha256(content.encode('utf-8')).hexdigest()
# 尝试从文件中读取上一次的哈希值
try:
with open("last_hash.txt", "r") as file:
last_hash = file.read()
except FileNotFoundError:
last_hash = ""
# 定义发送邮件的函数
def send_email(body):
sender_email = "⋯⋯"
receiver_email = "⋯⋯"
password = "⋯⋯"
# 创建 MIME 多部分消息
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "网页内容变化通知"
# 添加邮件正文
message.attach(MIMEText(body, "plain"))
# 登录 SMTP 服务器并发送邮件
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
# 比较当前哈希值与上一次的哈希值
if content_hash != last_hash:
print("网页内容发生了变化!")
# 发送通知邮件
send_email("监控的网页内容发生了变化,请检查:" + url)
# 更新存储的哈希值
with open("last_hash.txt", "w") as file:
file.write(content_hash)
else:
print("网页内容未发生变化。")
步驟4:
crontab -e ,每天8點,跑個步
0 8 * * * python3 /root/web_monitor.py
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. 更換為163,搞定。
所以,不安全的服務,也有自己的用法。
Comments
Post a Comment