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

如何用urllib和BeautifulSoup精准提取<h3>标签内的"190.0 kg"文本?

解决方法:用BeautifulSoup精准提取

标签内的目标文本

嘿,我明白你的问题了——之前用attrs={'class': 'col-md-7'}提取得到错误结果,大概率是因为这个class对应的元素不止一个,或者该容器里还有其他干扰内容。直接定位<h3>标签会更精准,下面给你几种可行的方案:

方案1:结合父容器+

标签定位

如果目标的"190.0 kg"确实在class为col-md-7的容器内的<h3>里,你可以先锁定这个容器,再从中提取<h3>的文本:

from urllib.request import urlopen
from bs4 import BeautifulSoup

# 替换成你的目标网址
target_url = "https://example.com/your-page"
html_content = urlopen(target_url)
soup = BeautifulSoup(html_content, "html.parser")

# 先找到目标容器,再提取里面的h3文本
target_container = soup.find("div", class_="col-md-7")
if target_container:
    h3_text = target_container.find("h3").text.strip()
    print(h3_text)  # 这里应该会输出190.0 kg

方案2:直接用CSS选择器一步到位

BeautifulSoup支持CSS选择器,用它可以更简洁地定位到目标元素:

# 承接上面的soup初始化代码
target_text = soup.select_one("div.col-md-7 h3").text.strip()
print(target_text)

方案3:遍历所有

标签筛选目标

如果不确定目标

的位置,也可以遍历页面所有<h3>标签,筛选包含"kg"的文本:

all_h3 = soup.find_all("h3")
for h3 in all_h3:
    text = h3.text.strip()
    if "kg" in text:
        print(text)  # 找到目标文本190.0 kg

为什么之前的方法出错?

你之前直接用attrs={'class': 'col-md-7'}提取,可能拿到的是页面中第一个class为col-md-7的元素,而目标内容在后面的同class元素里;或者该容器内有多个文本节点,导致提取到了无关内容。结合<h3>标签定位,能精准锁定你要的数值文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:07:24