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

检测行增量:网页棋局新走法检测中缓冲区对比失效问题

解决方案

核心问题是你没保留上一次的走法状态,每次循环都把新值覆盖了buffer,自然没法有效对比。按下面的思路调整:

  • 保留历史走法:用独立变量存上一次获取的完整走法,每次新抓取后和这个变量对比。
  • 控制请求节奏:别高频请求网站,加个延迟,避免被封IP或触发反爬机制。
  • 精准提取走法:如果网页有专门存放棋局的元素(比如带特定class的<div>/<pre>标签),优先用元素选择器定位,比从整个页面文本里截取靠谱。
  • 只展示新增走法:对比新旧走法的差异,拆分出新增的步骤,不用重复打印全部内容。

改进后的代码:

import requests
from bs4 import BeautifulSoup
import time

URL_TEMPLATE = "你的目标URL"
last_moves = ""  # 存储上一次的完整走法记录

while True:
    try:
        r = requests.get(URL_TEMPLATE)
        r.raise_for_status()  # 捕获4xx/5xx类的请求错误
        soup = BeautifulSoup(r.text, "lxml")
        
        # 优先用元素选择器提取走法(示例:假设走法在class为"game-moves"的pre标签里)
        moves_element = soup.find("pre", class_="game-moves")
        if moves_element:
            current_moves = moves_element.text.partition("*")[0].strip()
        else:
            # 保留原文本截取逻辑,同时增加容错
            moves_raw = soup.text
            start_idx = moves_raw.find('1. ')
            if start_idx == -1:
                print("未找到棋局走法")
                time.sleep(5)
                continue
            current_moves = moves_raw[start_idx:].partition("*")[0].strip()
        
        # 对比新旧走法,输出新增内容
        if current_moves != last_moves:
            # 拆分走法为单步列表,直接提取新增部分
            last_steps = last_moves.split() if last_moves else []
            current_steps = current_moves.split()
            new_steps = current_steps[len(last_steps):]
            if new_steps:
                print("新增走法:", ' '.join(new_steps))
            # 更新历史走法记录
            last_moves = current_moves
        
        # 间隔5秒再发起下一次请求,可根据实际情况调整时长
        time.sleep(5)
        
    except Exception as e:
        print(f"请求出错:{str(e)}")
        time.sleep(10)  # 出错后延长重试间隔

关键说明

  1. 历史状态保留:last_moves变量始终存储上一次的完整走法,每次新抓取后先对比是否有变化,避免无效输出。
  2. 新增走法提取:把走法拆成单步列表,通过长度差直接获取新增部分,只打印新内容,不用重复输出全部走法。
  3. 容错处理:加入了请求错误捕获和走法未找到的判断,避免程序意外崩溃。
  4. 请求频率控制:延迟请求既对网站友好,也能降低被拦截的风险。

如果网页结构允许,一定要用元素选择器定位走法容器——页面其他内容的更新可能会干扰文本截取的结果,这也是你之前对比效果差的潜在原因之一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:10:35