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

使用Scrapy无法提取span类中的评分文本问题求助

提取Amazon巴西站商品评分文本问题解决

问题描述

尝试提取页面中span标签内的评分文本,已使用以下XPath表达式但遇到问题:

尝试过的XPath

response.xpath("//i/span[@class='a-icon-alt']/text()").getall()
response.xpath('//span[@data-hook="rating-out-of-text"]/text()').getall()

目标HTML结构

<div class="a-fixed-left-grid AverageCustomerReviews a-spacing-small">
  <div class="a-fixed-left-grid-inner" style="padding-left:105px">
    <div class="a-fixed-left-grid-col a-col-left" style="width:105px;margin-left:-105px;float:left;">
      <i data-hook="average-star-rating" class="a-icon a-icon-star-medium a-star-medium-4 averageStarRating">
        <span class="a-icon-alt">3,8 de 5 estrelas</span>
      </i>
    </div>
    <div class="a-fixed-left-grid-col aok-align-center a-col-right" style="padding-left:0%;float:left;">
      <div class="a-row">
        <span class="a-size-base a-nowrap">
          <span data-hook="rating-out-of-text" class="a-size-medium a-color-base">3,8 de 5</span>
        </span>
      </div>
    </div>
  </div>
</div>

解决方案

你所用的XPath语法本身是正确的,无法提取内容大概率是以下原因:

  • 页面动态渲染:该页面可能通过JavaScript加载评分数据,直接使用Scrapy的response.xpath无法获取动态生成的内容。此时需要使用Splash、Playwright等工具渲染页面后再提取。
  • 选择器范围过宽:页面中可能存在多个相同class或data-hook的元素,导致匹配到无关内容或无法精准定位。可以通过父容器缩小范围:
    # 精准提取完整评分文本
    response.xpath("//div[contains(@class,'AverageCustomerReviews')]//span[@class='a-icon-alt']/text()").get()
    # 提取简化版评分文本
    response.xpath("//div[contains(@class,'AverageCustomerReviews')]//span[@data-hook='rating-out-of-text']/text()").get()
    
  • 爬取内容验证:先打印response.text确认返回的HTML中是否包含目标span标签,部分网站会通过反爬机制返回空页面或不同内容,需先排查这一点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:30:51