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

Python亚马逊网页爬取:如何获取格式规范的商品价格

亚马逊加拿大站点商品价格爬取格式问题解决方案

问题描述

爬取亚马逊加拿大站点商品价格时,通过corePriceDisplay_desktop_feature_div节点提取的文本包含大量空白和换行,输出格式混乱:

$394.00
           
            
             $
            
             394
             
              .
             

             00

使用的核心代码如下:

import requests
from bs4 import BeautifulSoup

url = 'https://www.amazon.ca/Nintendo-SwitchTM-Neon-Blue-Joy-E2-80-91ConTM-dp-B0BFJWCYTL/dp/B0BFJWCYTL/ref=dp_ob_title_vg'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"}

page = requests.get(url, headers=headers)
soup1 = BeautifulSoup(page.content, "lxml")
soup2 = BeautifulSoup(soup1.prettify(), "lxml")

price = soup2.find(id='corePriceDisplay_desktop_feature_div').get_text()
print(price)

解决方案

方法1:清理提取到的原始文本

直接对提取的文本进行空白字符清理,再用正则匹配标准价格格式:

import re

# 提取文本并移除多余空白
price_text = soup2.find(id='corePriceDisplay_desktop_feature_div').get_text(strip=True)
# 匹配$开头、整数+两位小数的价格格式
price_match = re.search(r'\$\d+\.\d{2}', price_text)
if price_match:
    clean_price = price_match.group()
    print(clean_price)  # 输出 $394.00
  • get_text(strip=True)会移除所有首尾空白,并将中间的多个空白/换行合并为单个空格,配合正则可精准提取有效价格。

方法2:定位更精确的子节点

亚马逊价格通常拆分为货币符号、整数部分、小数部分三个独立span,直接抓取各部分再拼接:

# 分别定位价格的组成节点
currency_symbol = soup2.find('span', class_='a-price-symbol')
price_whole = soup2.find('span', class_='a-price-whole')
price_fraction = soup2.find('span', class_='a-price-fraction')

# 拼接成整洁价格
if currency_symbol and price_whole and price_fraction:
    clean_price = f"{currency_symbol.get_text(strip=True)}{price_whole.get_text(strip=True)}.{price_fraction.get_text(strip=True)}"
    print(clean_price)  # 输出 $394.00
  • 这种方法更稳定,避免页面小变动导致正则失效,直接抓取价格的核心组成部分。

额外优化

代码中无需两次解析BeautifulSoup,soup1.prettify()属于冗余操作,简化后代码更高效:

# 简化解析流程
soup = BeautifulSoup(page.content, "lxml")
# 后续直接用soup进行节点查找即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:55:33