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

如何用Selenium和Python提取网页中的原价与折扣价

解决商品原价与折扣价提取问题

问题根源

你当前的代码全局匹配所有含price/cost类的span,会把页面中推荐商品的价格也捞进来,而且没有区分原价和折扣价的逻辑,导致结果不符合预期。

通用解决方案思路

  1. 缩小搜索范围:先定位当前商品的主价格区域(而非全局搜索),详情页的主价格通常包裹在专属容器中(比如class含product-main-price、single-product-price的元素)。
  2. 区分原价与折扣价的特征:
    • 原价:常带有删除线样式,class名包含old、original、strike,或被<del>/<s>标签包裹
    • 折扣价:class名包含new、discounted、sale,或字体样式更突出(比如更大字号、特殊颜色)
  3. 数字清洗标准化:提取文本后统一转换为阿拉伯数字,过滤非数字字符。

修正后的代码示例

html = driver.page_source
soup = BeautifulSoup(html, "html.parser")

# 先定位当前商品的主价格容器(根据页面结构调整,示例页面可匹配含product-price的容器)
main_price_container = soup.find('div', class_=re.compile(r'product-price|single-price'))
if not main_price_container:
    print("未找到主价格容器")
else:
    # 提取原价:匹配带删除线或old/original类的元素
    original_price_elem = main_price_container.find(['del', 's'], class_=re.compile(r'old|original')) or main_price_container.find('span', class_=re.compile(r'old|original'))
    original_price = ""
    if original_price_elem:
        original_price_text = convert_numbers.persian_to_english(original_price_elem.text.strip())
        original_price = re.sub(r'\D', '', original_price_text)
        print(f"原价: {original_price}")
    
    # 提取折扣价:匹配new/discounted/sale类或核心price类的元素
    discounted_price_elem = main_price_container.find('span', class_=re.compile(r'new|discounted|sale')) or main_price_container.find('span', class_=re.compile(r'price'))
    discounted_price = ""
    if discounted_price_elem:
        discounted_price_text = convert_numbers.persian_to_english(discounted_price_elem.text.strip())
        discounted_price = re.sub(r'\D', '', discounted_price_text)
        print(f"折扣价: {discounted_price}")

通用适配技巧

  • 若遇到不同网站结构,优先查看页面源码里的价格属性:很多电商会用data-original-price、data-sale-price这类自定义属性存储价格,直接提取属性值比匹配标签更可靠
  • 结合文本辅助判断:比如波斯语页面中,原价旁可能标注"قیمت اصلی",折扣价旁标注"قیمت تخفیف خورده",可以用文本匹配或find_previous_sibling()辅助定位目标元素

内容的提问来源于stack exchange,提问作者Alireza Mirhabibi - IRAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:26:04