Python实现下载网页检索特定字符串功能时出现else语法无效报错,寻求解决方案
else语法无效的核心原因
你遇到的else语法报错,本质是代码块的缩进与逻辑错位打断了if/else的配对关系,具体问题点如下:
continue语句错误放在了和if同级的缩进位置,直接截断了if语句的结构:Python解析器会认为if块执行完后就结束了独立逻辑,后续的else找不到匹配的前置if,直接触发语法错误。按你原本的注释逻辑,找到关键词执行sleep后重试的操作,应该全部放在if的从属块内。- 其他连带的语法与运行问题:
- Python内置布尔值写法为大写的
True,你写的小写true会触发NameError - 代码中使用了
time.sleep()但没有导入time模块,运行会直接报错 - 文件路径笔误:写的路径
/Users/Computer/Desktop/Notification/[profile.txt多了一个左方括号,实际打开文件时会报路径不存在的错误 - 缩进不统一:所有
if、else分支下的代码没有按Python规范做4空格缩进对齐,进一步加剧解析错误 - 循环逻辑错位:下载网页、状态判断、webhook发送的核心逻辑没有被完整包在
while循环内,打印HTTP元数据的代码独立在循环外,就算修完语法问题,轮询逻辑也不会正常运行
- Python内置布尔值写法为大写的
修正后的可运行代码
import requests import time from discord import Webhook, RequestsWebhookAdapter # 循环执行下载、检测、通知逻辑 while True: print('Beginning file download with requests') url = str(input("Enter Profile ID:")) r = requests.get(url) # 写入网页内容到本地文本文件 with open('/Users/Computer/Desktop/Notification/profile.txt', 'wb') as f: f.write(r.content) # 打印HTTP元数据 print(r.status_code) print(r.headers['content-type']) print(r.encoding) # 打开本地文件检测特定关键词 with open('/Users/Computer/Desktop/Notification/profile.txt') as f: page_content = f.read() if 'avatar-status online profile-avatar-status icon-online' in page_content: # 检测到在线状态,等待20秒后重新轮询 time.sleep(20) continue # 未检测到在线状态,触发Discord webhook通知 else: webhook = Webhook.from_url("YOUR WEBHOOK HERE!", adapter=RequestsWebhookAdapter()) webhook.send("用户已离线")
内容的提问来源于stack exchange,提问作者deman2660
相关产品推荐
相关产品推荐

