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

新手求助:使用BeautifulSoup与Python获取目标<th>标签内容时代码报错

解决你的BeautifulSoup提取问题

嘿,我来帮你搞定这个问题~先拆解你代码里的问题,再给你正确的实现方式:

为什么你的代码会报错?

  1. findAll索引越界的原因:
    你的HTML里只有两个width="10%"的<th>标签,soup.findAll('th',{'width':'10%'})返回的是包含这两个标签的列表,列表索引只有0和1。你直接取索引3,显然超出了列表长度,所以会抛出索引越界异常。

  2. find加索引的问题:
    soup.find('th',{'width':'10%'})返回的是单个Tag对象(第一个匹配的标签),而不是列表。你试图对这个Tag对象用[3]索引,这完全不是正确用法——你要的是标签里的文本内容,而非对Tag本身做索引操作,所以这也会报错。

正确的提取步骤

要拿到第一个width="10%"的<th>里的1365,分三步就行:

  1. 获取第一个匹配的<th>标签
  2. 提取标签内的文本
  3. 从文本中分离出数字部分

完整代码示例

# 获取第一个width为10%的<th>标签
target_th = soup.find('th', {'width': '10%'})
# 提取标签的文本内容(得到"1365 m")
th_text = target_th.text.strip()
# 拆分文本,取第一个元素就是数字"1365"
track_num = th_text.split()[0]
# 输出结果
print('Track ' + track_num)

补充说明

  • 如果HTML里可能有多个width="10%"的<th>,但你确定要第一个,用find比findAll()[0]更直接。
  • 提取数字也可以用正则表达式,比如re.search(r'\d+', th_text).group(),这样即使文本格式有小变化,也能准确拿到数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:13:59