如何使用BeautifulSoup获取HTML中指定span元素的文本值?
解决方法
你当前的代码只是定位到了包含两个价格的<p>标签,所以会返回所有子元素的文本拼接结果。要单独获取<span>里的文本,可以用以下几种方式:
方法1:链式查找
先定位到目标<p>标签,再在其内部查找<span>元素,最后提取文本:
# 先找到p标签,再找里面的span price_container = soup.find("p", class_="book-price") target_price = price_container.find("span").get_text(strip=True) print(target_price) # 输出: TK. 2,050
strip=True用于去除文本前后的空白字符,让结果更整洁
方法2:直接使用CSS选择器
用CSS选择器一步定位到目标<span>,代码更简洁:
# 直接通过CSS选择器定位p标签下的span target_price = soup.select_one("p.book-price span").get_text(strip=True) print(target_price) # 输出: TK. 2,050
如果担心元素可能不存在(避免报错),可以加上判断:
price_elem = soup.select_one("p.book-price span") if price_elem: target_price = price_elem.get_text(strip=True) print(target_price) else: print("未找到目标价格元素")
内容的提问来源于stack exchange,提问作者afjol
相关产品推荐
相关产品推荐

