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

网页爬取问题:部分页面缺失致AttributeError,求if判断代码

解决爬取缺失页面时的AttributeError问题

嘿,这个问题我熟!你遇到的AttributeError是因为当页面不存在(比如第5、7页)时,soup.find(class_="text-muted")找不到对应的元素,会返回None。这时候你再去访问items.previous_sibling或者items.text,自然就会报错啦。

解决方法很简单,只需要在使用items之前判断它是否存在就行。同时我还加了请求状态码的检查,能更高效地跳过无效页面,来看修改后的完整代码:

import requests
from bs4 import BeautifulSoup

base_url = "http://cbcs.fastvturesults.com/student/1sp15me00"
for page in range(1, 10):
    r = requests.get(base_url + str(page))
    # 先检查请求是否成功,跳过无效页面
    if r.status_code != 200:
        print(f"第{page}页请求失败,状态码:{r.status_code}")
        continue
    c = r.content
    soup = BeautifulSoup(c, "html.parser")
    items = soup.find(class_="text-muted")
    # 核心判断:如果未找到目标元素,直接跳过当前循环
    if not items:
        print(f"第{page}页未找到目标内容,跳过")
        continue
    # 找到元素后正常输出内容
    print(f"{items.previous_sibling}\n{items.text}")

关键改动说明:

  • 请求状态码检查:当页面返回404(不存在)或其他错误状态码时,直接跳过HTML解析步骤,减少不必要的计算,同时给出明确提示。
  • 元素存在性判断:if not items:会在items为None(未找到目标元素)时触发,跳过后续会报错的代码逻辑。
  • 简化循环写法:range(1,10)等价于range(1,10,1),步长默认是1,代码更简洁。

这样修改后,不管是页面缺失还是页面内没有目标元素,都不会抛出错误,还能清晰看到哪些页面出了问题,方便后续排查~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:34:53