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

如何用HTMLParser()提取页面span标签中的价格信息?

使用HTMLParser提取指定span标签的价格

核心思路

HTMLParser是逐段解析HTML内容的,我们需要通过状态标记来跟踪是否进入了目标标签:

  1. 定义一个类继承自html.parser.HTMLParser
  2. 初始化一个状态变量(比如in_price_tag),用来标记当前是否处于目标span标签内
  3. 重写handle_starttag方法:检查当前标签是span且包含itemprop="price"属性,满足条件就把状态设为True,还可以直接提取content属性的值
  4. 重写handle_data方法:当状态为True时,处理标签内的文本内容
  5. 重写handle_endtag方法:遇到span标签时把状态重置为False,避免误匹配后续的span

完整代码示例

from html.parser import HTMLParser

class PriceParser(HTMLParser):
    def __init__(self):
        super().__init__()
        self.in_price_tag = False
        self.prices = []  # 用来存储提取到的价格

    def handle_starttag(self, tag, attrs):
        # 检查当前标签是span,且存在itemprop="price"的属性
        if tag == 'span':
            for attr_name, attr_value in attrs:
                if attr_name == 'itemprop' and attr_value == 'price':
                    self.in_price_tag = True
                    # 可选:直接提取content属性的值
                    for name, value in attrs:
                        if name == 'content':
                            self.prices.append(f'content属性值:{value}')
                    break

    def handle_data(self, data):
        # 只有处于目标标签内时,才处理文本内容
        if self.in_price_tag:
            # 去除文本前后的空白字符
            cleaned_data = data.strip()
            if cleaned_data:
                self.prices.append(f'标签文本:{cleaned_data}')

    def handle_endtag(self, tag):
        # 离开span标签时,重置状态
        if tag == 'span':
            self.in_price_tag = False

# 测试用例
test_html = '''
<div>
    <span itemprop="price" content="590">590 dollars</span>
    <span class="normal">普通文本</span>
    <span itemprop="price" content="1299">1299 USD</span>
</div>
'''

parser = PriceParser()
parser.feed(test_html)
parser.close()

# 输出提取到的价格
for price in parser.prices:
    print(price)

代码说明

  • handle_starttag里的attrs是一个元组列表,每个元素是(属性名, 属性值),遍历它即可判断是否是目标标签
  • 状态变量in_price_tag确保只有在目标span内的文本才会被收集
  • 既可以提取content属性的数值,也可以提取标签内的显示文本,根据需求选择即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:35:29