You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

初学者求助:网站变更监控脚本报Errno 2文件未找到错误

网站变更监控脚本错误修复方案

核心错误原因

第一次运行脚本时,website_content.txt文件还未创建,用"r"只读模式打开不存在的文件,就会触发Errno 2 no such file or directory错误。此外你的代码还有几个逻辑和语法问题,一起修正如下:

具体修复点

  • 处理文件不存在场景:用try-except捕获文件不存在的异常,第一次运行时直接写入当前页面内容作为初始基准值;后续运行再读取已有文件内容对比。
  • 修正响应变量名:你用requests.get()得到的响应对象是r,不是response,所以要把response.txt改成r.text。
  • 反转变更判断逻辑:原代码中内容相同时打印“已变更”,逻辑完全反了,应该是内容不同时才提示变更。
  • 补全URL协议头:requests.get()需要完整的URL(比如https://www.myurl.com),只写域名会导致请求失败。

修复后的完整代码

import requests
import time

Headers = {"user-agent":"my user-agent"}
URL = "https://www.myurl.com"  # 补全协议头

def monitor_website_changes():
    while True:
        try:
            r = requests.get(URL, headers=Headers)
            r.raise_for_status()  # 捕获HTTP请求错误
            
            # 尝试读取历史内容
            try:
                with open("website_content.txt", "r") as file:
                    previous_content = file.read()
            except FileNotFoundError:
                # 文件不存在时初始化基准内容
                with open("website_content.txt", "w") as file:
                    file.write(r.text)
                print("初始化基准内容完成,开始监控...")
                time.sleep(1)
                continue
            
            # 判断内容是否变更
            if r.text != previous_content:
                print("网站内容已变更!")
                with open("website_content.txt", "w") as file:
                    file.write(r.text)
            else:
                print("网站内容无变化")
            
            time.sleep(1)
        except requests.exceptions.RequestException as e:
            print(f"请求失败: {e}")
            time.sleep(5)  # 请求失败时延长重试间隔

monitor_website_changes()

额外说明

  • 加入r.raise_for_status()捕获HTTP请求错误(比如404、500),避免后续处理无效响应。
  • 请求失败时增加重试间隔,减少无效请求频率。
  • 你导入的BeautifulSoup未被使用,如果打算监控特定页面元素(而非整个HTML),可以用BeautifulSoup提取目标内容后再对比,避免无关格式变化触发误报。

内容的提问来源于stack exchange,提问作者Riccardo Melis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:55:06