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

Python BeautifulSoup提取含空注释标签的指定class div内容

问题原因

当前代码仅完成了价格所在div节点的定位,直接打印节点对象输出的是标签的完整HTML结构,不会返回标签内的实际文本内容。另外目标站点的价格模块存在两种前端渲染结构,仅匹配单一div类名的写法,在部分药品页面会直接定位失败。

正确提取逻辑
  • 定位到目标标签后,调用标签的.text属性即可提取内部所有文本内容,该方法会自动忽略标签内插入的注释片段,可直接获取带货币符号的价格字符串。如果需要纯数字数值,过滤掉文本中的非数字字符即可得到目标值5。
  • 增加分支判断逻辑,同时兼容div、span两种价格容器的页面结构,适配不同药品页的渲染差异,避免提取失败。
  • 发起请求时需要携带浏览器请求头,否则会被站点反爬策略拦截,无法拿到正确的页面源码。
可运行参考代码
import requests
from bs4 import BeautifulSoup

# 模拟浏览器请求头,绕过基础反爬校验
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

if __name__ == '__main__':
    # 替换为需要爬取的目标药品页地址
    turl = '目标药品页面地址'
    print(turl)
    resp = requests.get(turl, headers=headers)
    soup = BeautifulSoup(resp.content, "html.parser")
    
    # 优先匹配div结构的价格标签
    price_div = soup.find('div', class_='DrugPriceBox__price___dj2lv')
    if price_div:
        price_text = price_div.text
        print(price_text)
        # 提取纯数字价格
        pure_num = ''.join([c for c in price_text if c.isdigit()])
        print(f"纯数字价格:{pure_num}")
    else:
        # div结构匹配失败时,兼容span结构的价格标签
        price_span = soup.find('span', class_="PriceBoxPlanOption__margin-right-4___2aqFt PriceBoxPlanOption__stike___pDQVN")      
        if price_span:
            price_text = price_span.text
            print(price_text)
            pure_num = ''.join([c for c in price_text if c.isdigit()])
            print(f"纯数字价格:{pure_num}")
        else:
            print('未提取到对应价格')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:54:21