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

无法从亚马逊商品页WebScrape评分百分比仅返回空值问题求助

问题原因

  • 亚马逊具备严格的反爬机制,直接使用requests发起无标识请求会被拦截,返回的响应内容并非浏览器端正常渲染的商品详情页,因此无法匹配到对应元素。
  • 你当前使用的选择器a.a-link-normal覆盖范围太广,全站大量链接都使用该类名,即便拿到正常页面也很难精准定位到评分百分比数据。

解决方法

  1. 请求时添加合法的User-Agent请求头,模拟桌面端浏览器行为,避免被反爬拦截。你可以在自己浏览器的开发者工具-网络面板中,复制任意页面请求自带的User-Agent使用。
  2. 新增状态码校验逻辑,确保请求成功后再执行页面解析。
  3. 更换更精准的CSS选择器,直接定位评分直方图的百分比数据。

可运行参考代码

from bs4 import BeautifulSoup
import requests

url = 'https://www.amazon.in/dp/B09BJQCTMX?ref=myi_title_dp'
# 替换为你自己浏览器对应的User-Agent
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8"
}

req = requests.get(url, headers=headers)
# 先校验请求是否成功
if req.status_code == 200:
    content = BeautifulSoup(req.content, "lxml")
    # 精准定位各星级的百分比数据
    rating_percents = content.select('div#averageCustomerReviews div#histogramTable td.a-text-right span.a-size-base')
    for idx, percent in enumerate(rating_percents, start=1):
        print(f"{5-idx+1}星占比:{percent.get_text(strip=True)}")
else:
    print(f"请求失败,状态码:{req.status_code}")

补充注意事项

  • 不要长期固定使用同一个公开UA,频繁请求会被亚马逊识别拦截,可以准备多个UA轮流切换。
  • 如果仍然拿不到数据,可以尝试添加浏览器复制的cookie参数,或者使用代理IP轮换降低被拦截的概率。
  • 频繁爬取亚马逊页面会触发人机验证,此时需要接入打码服务或者使用Selenium等自动化工具模拟人工操作绕过验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:07