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

Python使用requests库时if条件未满足仍执行代码的问题

问题根因

你的if判断存在逻辑写法错误,受Python运算符优先级规则影响,in的执行优先级高于or,你写的条件实际会被解析为:

if (bool("We're sorry, but the page you were looking for couldn't be found")) or ("Page not found" in pageresult):

其中第一个判断分支是直接对非空字符串做布尔判定,非空字符串的布尔值永远是True。根据or的短路逻辑,只要左侧表达式为真,就会直接判定整个条件成立,根本不会执行右侧的页面内容匹配判断,所以不管返回的页面内容是什么,if块内的代码都会执行。

修正代码

你需要为两个待匹配的提示文本都写完整的成员检查逻辑,修正后的完整代码如下:

pageresult = requests.get(combo[0], headers=header).text
        
if "We're sorry, but the page you were looking for couldn't be found" in pageresult or "Page not found" in pageresult:
    print('on page\n')
    print(combo[0])
    with open("PAGERESULT.txt", "w", encoding="utf-8") as text_file:
        text_file.write(pageresult)
可选优化点
  • 优先通过HTTP状态码判断页面是否不存在:拿到requests响应对象后先判断response.status_code == 404,再配合页面文本匹配,判定准确率远高于单独匹配文本
  • 文件操作推荐使用with上下文管理器,不需要手动调用close()方法,即使代码运行中途报错也能自动释放文件资源
  • 写入文件时显式指定encoding="utf-8",避免不同系统默认编码差异导致特殊字符写入乱码或者报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 14:01:26