网页变化监测器

需求:编写⼀个脚本定期检查⽹⻚内容的变化(如价格变化、新闻更新等),并通过电⼦邮件或其他⽅式通知⽤⼾,了解定时任务和通知实现机制。

分析:创建⼀个⽹⻚变化监测器涉及到⼏个关键步骤:⾸先,定期抓取⽬标⽹⻚的内容;然后,⽐较最新抓取的内容与之前保存的内容以检测变化;最后,如果检测到变化,通过电⼦邮件或其他⽅式通知⽤⼾。

在这个⽰例中,将使⽤Python的 requests 库来抓取⽹⻚, hashlib 来⽐较内容的变化,并使⽤schedule 库来定时执⾏任务。为了简化,将演⽰如何打印变化通知到控制台,⽽不是发送电⼦邮件。

确保已安装 requests 和 schedule 库。如果未安装,请通过以下命令进⾏安装:

pip install requests schedule

示例: 

import requests
import hashlib
import schedule
import time

 # ⽬标⽹⻚URL
url = 'http://example.com'
# 存储上⼀次⽹⻚内容的哈希值
last_hash = ''

def fetch_content(url):
    """获取⽹⻚内容"""
    response = requests.get(url)
    return response.text

def check_for_changes():
    """检查⽹⻚内容是否发⽣变化,并更新last_hash"""
    global last_hash
    # 获取当前内容并计算哈希值
    current_content = fetch_content(url)
    current_hash = hashlib.sha256(current_content.encode('utf-8')).hexdigest()

    if current_hash != last_hash:
        print("⽹⻚内容发⽣了变化!")
        # 更新last_hash为当前内容的哈希值
        last_hash = current_hash
    else:
        print("⽹⻚内容未发⽣变化。")

# 定期执⾏检查
schedule.every(10).seconds.do(check_for_changes)

while True:
    schedule.run_pending()
    time.sleep(1)

在这个脚本中:

• fetch_content 函数⽤于获取指定URL的⽹⻚内容。

• check_for_changes 函数检查当前⽹⻚内容的哈希值是否与之前保存的哈希值相同。如果不同,说明⽹⻚内容发⽣了变化。

• 使⽤ schedule 库定期执⾏ check_for_changes 函数,这⾥设置为每10秒检查⼀次。可以根据需要调整检查频率。

• 如果检测到⽹⻚内容变化,脚本将打印⼀条消息。在实际应⽤中,可以在这⾥添加发送电⼦邮件或其他通知的代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 JavaScript 中的 MutationObserver API 来监控网页变化。MutationObserver 是一个异步 API,它可以观察到 DOM 中的节点变化,并在变化发生时执行回调函数。 以下是一个简单的示例,演示如何使用 MutationObserver 监控网页内容变化: ```javascript // 选择要监控的节点 const targetNode = document.getElementById('some-node'); // 创建 MutationObserver 实例 const observer = new MutationObserver(mutationsList => { for (let mutation of mutationsList) { // 检测节点内容是否变化 if (mutation.type === 'childList' && mutation.target === targetNode) { console.log('节点内容发生变化:', mutation.target.textContent); } } }); // 配置 MutationObserver const config = { childList: true, subtree: true }; // 开始监控 observer.observe(targetNode, config); ``` 在上述代码中,我们首先选择要监控的节点 `targetNode`,然后创建 MutationObserver 实例 `observer`。接着,我们定义了一个回调函数,当节点内容发生变化时,会打印出变化的内容。然后,我们配置了 MutationObserver 的选项,设置为监控子节点的变化,并递归监控整个子树。最后,我们调用 `observer.observe()` 方法开始监控。 需要注意的是,MutationObserver 是异步 API,因此它无法保证所有变化都会被立即捕获。在某些情况下,可能会出现延迟或遗漏的现象。所以,如果你需要实时监控网页变化,最好使用其他更可靠的方法,例如 WebSocket 或长轮询等技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值