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

BeautifulSoup找到存在的元素却返回None?

解决AttributeError: 'NoneType' object has no attribute 'prettify'问题

你的问题核心是soup.find(id='wrapper')返回了None,说明BeautifulSoup在请求返回的HTML里找不到目标元素,大概率是网站反爬机制拦截了你的requests请求,返回的不是正常页面内容。

排查步骤

先验证请求返回的内容是否正常,在代码中加入以下代码:

print(page.status_code)
print(page.text[:500])  # 打印返回内容的前500个字符

如果状态码不是200,或者返回文本包含反爬提示(比如"Anti-bot"、验证相关内容),就说明请求被拦截了。

解决方案:添加请求头模拟浏览器

网站通常通过User-Agent字段识别爬虫,你需要在请求中加入浏览器的User-Agent,模拟正常访问:

修改后的完整代码:

import requests  # 避免用from requests import *,防止命名冲突
from bs4 import BeautifulSoup

URL = 'https://plancke.io/hypixel/player/stats/Captbugz'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find(id='wrapper')

# 先判断元素是否存在,再调用方法避免异常
if results:
    print(results.prettify())
else:
    print("未找到id为wrapper的元素,请检查请求返回内容")

额外建议

  • 不要使用from requests import *这种导入方式,容易引发命名冲突,建议用import requests。
  • 调用元素的方法前先判断元素是否为None,可以避免这类属性错误。
  • 如果添加User-Agent后仍无效,可以尝试补充Accept、Accept-Language等请求头字段,或者用requests.Session()维持会话。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:25:40