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

网页爬取技术咨询:如何提取星级评分中的最高星级

爬取AirlineQuality网站星级的解决方案

核心思路

不用纠结星级元素的具体class数值(1、2、3这类),直接统计页面中处于填充状态的星级元素总数,这个总数就是对应评论的最高星级。


具体实现方法

1. 使用BeautifulSoup(Python)

假设页面中填充的星级元素带有统一的fill类标识(比如网站实际结构为<span class="star fill 1">、<span class="star fill 2">),通过选择所有填充元素计数即可:

from bs4 import BeautifulSoup
import requests

url = "https://www.airlinequality.com/airline-reviews/british-airways/page/1/"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 选中所有填充状态的星级元素
filled_stars = soup.select("span.star.fill")
# 元素数量即为最高星级
max_rating = len(filled_stars)
print(f"最高星级: {max_rating}")

如果填充星级通过aria-label属性标识(比如包含"filled"关键词),可调整选择器:

filled_stars = soup.select('span[aria-label*="filled"]')
max_rating = len(filled_stars)

2. 使用Scrapy框架

在Scrapy爬虫中,用CSS或XPath选择器直接统计:

def parse(self, response):
    # CSS选择器统计填充星级
    max_rating = len(response.css("span.star.fill"))
    # 或用XPath写法
    max_rating = len(response.xpath('//span[contains(@class, "star") and contains(@class, "fill")]'))
    yield {"max_rating": max_rating}

3. 批量处理多条评论

若页面包含多条评论,需遍历每个评论块单独统计:

# BeautifulSoup遍历评论块
reviews = soup.find_all("div", class_="review-stats")
for review in reviews:
    filled_stars = review.select("span.star.fill")
    max_rating = len(filled_stars)
    print(f"该评论星级: {max_rating}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:03:19