如何用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
相关产品推荐
相关产品推荐

