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

Python BeautifulSoup提取亚马逊印度商品页面价格失败求助

解决亚马逊印度页面价格提取错误问题

问题根源

  • 亚马逊页面里存在多个带a-size-medium a-color-price类的span元素,你当前代码抓的是原价(MRP),而非实际促销价。
  • 请求头配置不全,亚马逊会根据请求标识返回不同内容,无浏览器标识的请求可能拿到非目标区域的价格数据。

具体解决步骤

  1. 先排查所有匹配元素
    先打印页面里所有符合该class的span内容,确认目标价格的位置:

    price_spans = soup.find_all("span", attrs={'class': 'a-size-medium a-color-price'})
    for idx, span in enumerate(price_spans):
        print(f"Span {idx}: {span.string}")
    

    执行后会发现,第一个是原价235,第二个才是你要的188,这时可以直接用soup.find_all()[1]提取,不过更推荐用精准选择器。

  2. 用稳定的选择器定位实际售价
    亚马逊的实际售价一般嵌套在#corePriceDisplay_desktop_feature_div容器里,或者由a-price-whole(整数部分)和a-price-fraction(小数部分)组合而成,后者的稳定性更强:

    # 提取价格的整数和小数部分
    price_whole = soup.find("span", class_="a-price-whole").text.strip()
    price_fraction = soup.find("span", class_="a-price-fraction").text.strip()
    total_price = f"Rs. {price_whole}.{price_fraction}"
    
  3. 完善请求头,模拟浏览器访问
    亚马逊会拦截非浏览器请求,添加User-Agent等头信息确保返回正确页面:

    import requests
    from bs4 import BeautifulSoup
    
    url = "https://www.amazon.in/Sensodyne-Sensitive-Toothpaste-Repair-Protect/dp/B01AAE8JHQ/"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    
    # 提取并输出目标价格
    price_whole = soup.find("span", class_="a-price-whole").text.strip()
    price_fraction = soup.find("span", class_="a-price-fraction").text.strip()
    total_price = f"Rs. {price_whole}.{price_fraction}"
    print(total_price)  # 输出 Rs. 188.00
    

补充提示

  • 亚马逊页面结构会不定期更新,若上述选择器失效,直接用浏览器开发者工具(F12)定位目标价格的父容器或唯一属性,调整选择器即可。
  • 不要频繁发起请求,避免被封禁IP,必要时添加请求间隔或使用代理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:13:16