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

使用Beautiful Soup4爬取网页时span标签文本缺失问题

问题分析与解决办法

我来帮你拆解下为啥会出现这种情况,你遇到的问题大概率是下面几个原因之一:

1. 页面内容是动态渲染的

这是最常见的原因!很多现代网站会用JavaScript在页面加载完成后才动态插入内容,你用BeautifulSoup直接请求到的只是服务器返回的初始静态HTML源码,而浏览器里看到的<span id="numrefs">(0)</span>是JS执行后渲染出来的结果。

你可以打开浏览器的「查看页面源代码」(不是右键审查元素),如果里面的numrefs span确实是空的,那肯定是动态加载的问题。这时候就得用能模拟浏览器执行JS的工具,比如Selenium或者Playwright。

给你个Selenium的示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器驱动(需要对应你浏览器的驱动,比如ChromeDriver)
driver = webdriver.Chrome()
driver.get("你的目标页面URL")

# 等待元素加载完成,最多等10秒
wait = WebDriverWait(driver, 10)
numrefs_element = wait.until(EC.presence_of_element_located((By.ID, "numrefs")))

# 提取文本
print(numrefs_element.text)

# 关闭浏览器
driver.quit()

2. 代码里的变量名拼写错误

看你贴的代码里,定义的是container,但后面print用的是cotainer(少了一个字母n)——不过你说运行结果显示了span标签,可能是你提问时的笔误?还是要提醒下:确保变量名完全一致,不然会报错或者拿不到正确的数据。

3. 爬取的页面和你在浏览器看到的不一致

有时候会因为登录状态、地域限制、Cookie差异,导致你用代码请求到的页面和浏览器里的不一样。比如有些内容需要登录后才会显示,或者服务器根据你的请求头返回不同的内容。

这时候可以先打印出你爬取到的整个HTML看看:

print(soup.prettify())

检查里面的numrefs span标签到底有没有文本,确认是不是请求到的内容本身就为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:40:07