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

使用Requests与XPath爬取亚马逊多卖家价格遇到的技术问题

解决亚马逊多卖家价格爬取问题

Got it, let's break down why you're struggling to get those other seller prices and fix it step by step.

核心问题分析

亚马逊的「New (x) from」卖家信息区域是动态加载的——它不会出现在requests.get()返回的初始HTML响应里。你原本的代码试图定位还未渲染的元素,所以XPath自然返回空值。另外你的代码还有几个小bug(比如没用到传入的URL参数、XPath里的转义引号错误)也加剧了问题。

修正方案

下面是修改后的代码,能处理动态内容并正确定位目标元素:

from requests_html import HTMLSession

def GetPrice(URL):
    s = HTMLSession()
    # 模拟真实浏览器的User-Agent,避免被亚马逊识别为爬虫拦截
    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'
    }
    r = s.get(URL, headers=headers)
    
    # 用无头浏览器渲染页面,加载动态内容
    # 设置5秒等待时间,给卖家区域足够的加载时长
    r.html.render(sleep=5)
    
    # 用灵活的XPath匹配所有卖家价格(匹配ID以"aod-price-"开头的元素)
    seller_prices = r.html.xpath('//div[contains(@id, "aod-price-")]/span/span[2]/text()')
    
    # 同时获取页面默认显示的价格做对比
    default_price = r.html.xpath('//span[@class="a-price-whole"]/text()')
    default_price = default_price[0] if default_price else "无法获取默认价格"
    
    product = {
        'default_price': default_price,
        'other_seller_prices': seller_prices
    }
    
    print(product)
    return product

# 测试你的目标URL
GetPrice('https://www.amazon.co.uk/Colgate-Fresh-Cooling-Crystals-Toothpaste/dp/B073V1MB17/ref=sr_1_5_mod_primary_new?dchild=1&keywords=Toothpaste&qid=1625698678&rdc=1&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=8-5')

关键改进点

  • 动态内容处理:r.html.render()方法会启动无头Chromium浏览器,像真实用户浏览一样渲染页面,从而加载出隐藏的卖家信息区域。sleep=5是给页面预留足够的动态数据加载时间。
  • 灵活的XPath:不再硬编码特定ID(比如aod-price-1),而是用contains(@id, "aod-price-")匹配所有卖家价格元素,适配多个卖家的场景。
  • 反拦截措施:添加真实的User-Agent请求头,降低被亚马逊识别为爬虫的概率。
  • Bug修复:代码现在使用传入的URL参数而非全局变量,同时修复了XPath里的转义引号问题。

额外注意事项

  • 亚马逊会频繁调整页面结构,你可能需要定期用浏览器开发者工具(F12)检查卖家价格元素,更新XPath。
  • 避免过于频繁的爬取操作——可以在请求之间添加延迟,或者使用代理,防止IP被封禁。
  • 如果调用render()时出错,按照提示安装Chromium即可(requests-html会给出具体安装命令)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:17:50