如何从GitHub提取目标文本?版本检测脚本误触发更新求助
问题分析与解决
问题根源
- 你使用的是GitHub的网页预览链接(blob地址),该地址返回的是完整的GitHub页面HTML代码,而非你文件中存储的"0.5"内容,从你打印出的
b'<!DOCTYPE html>...'就能验证这一点。 URL.read()返回的是字节类型(bytes),而currentVersion是字符串类型,直接进行比对必然不相等。- 即使获取到正确内容,文件中可能存在的换行、空格等空白字符,也会导致比对失败。
解决步骤
- 替换为GitHub raw文件链接:将地址中的
blob/main替换为raw/main,比如你的文件链接应改为https://github.com/Hardcorekila/updater/raw/main/0.5.html,这个链接会直接返回文件的原始内容。 - 处理数据类型与空白字符:将字节数据解码为字符串,再用
.strip()去除首尾的换行、空格等空白字符,确保比对的准确性。 - 优化请求逻辑:统一使用
requests库处理网络请求,同时添加异常处理,避免网络问题导致程序崩溃。
修改后的代码
import requests currentVersion = "0.5" # 使用raw文件链接获取版本内容 version_url = 'https://github.com/Hardcorekila/updater/raw/main/0.5.html' try: # 获取远程版本并处理格式 version_response = requests.get(version_url) version_response.raise_for_status() remote_version = version_response.text.strip() print(f"远程版本: {remote_version}") if remote_version == currentVersion: print("App已更新到最新版本!") else: print("App不是最新版本,正在下载新版本...") # 下载最新程序文件 exe_url = "https://github.com/Hardcorekila/updater/raw/main/main.exe" exe_response = requests.get(exe_url) exe_response.raise_for_status() with open("main.exe", "wb") as f: f.write(exe_response.content) print("新版本下载完成!") except requests.exceptions.RequestException as e: print(f"请求出错: {e}")
内容的提问来源于stack exchange,提问作者Cave Johnson123
相关产品推荐
相关产品推荐

