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

如何爬取Skytrax网站座椅舒适度的span标签星级评分?

解决方案

首先,分析目标HTML结构:每个评分项(如座椅舒适度)对应一个包含标签和星级的表格行,星级所在的<td>类为review-rating-stars stars,其中填充的星星是带有fill类的<span>标签,统计这类标签的数量就是对应星级。

修改代码获取座椅舒适度星级

在循环中替换seat_comfort相关代码,按以下逻辑实现:

  1. 精准定位标注"Seat Comfort"的表格单元格
  2. 获取其相邻的星级单元格
  3. 统计其中带fill类的<span>标签数量

修改后的完整代码片段:

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

reviews = soup.find_all('article', class_="comp_media-review-rated")
for item in reviews:
    title = item.find('h2', class_="text_header").text.strip()
    meta = item.find('h3', class_="text_sub_header").text.strip()
    main_review = item.find("div", class_="text_content").text.strip()
    
    # 基础信息获取保持不变
    aircraft = item.find_all('td', class_="review-value")[0].text
    traveller_type = item.find_all('td', class_="review-value")[1].text
    seat_type = item.find_all('td', class_="review-value")[2].text
    route = item.find_all('td', class_="review-value")[3].text
    travel_date = item.find_all('td', class_="review-value")[4].text
    
    # 获取座椅舒适度星级(带异常处理,避免无评分时报错)
    try:
        seat_comfort_label = item.find('td', string='Seat Comfort')
        seat_comfort_stars = seat_comfort_label.find_next_sibling('td', class_='review-rating-stars stars')
        seat_comfort = len(seat_comfort_stars.find_all('span', class_='fill'))
    except AttributeError:
        seat_comfort = None  # 无此项评分时设为默认值
    
    # 其他评分项可按相同逻辑实现,以客舱服务为例
    try:
        cabin_staff_label = item.find('td', string='Cabin Staff Service')
        cabin_staff_stars = cabin_staff_label.find_next_sibling('td', class_='review-rating-stars stars')
        cabin_staff_service = len(cabin_staff_stars.find_all('span', class_='fill'))
    except AttributeError:
        cabin_staff_service = None
    
    # 其余评分项(餐饮、机上娱乐、地面服务等)同理替换标签文本即可
    # ...
    
    # 示例输出
    print(f"标题: {title}\n座椅舒适度星级: {seat_comfort}\n客舱服务星级: {cabin_staff_service}\n")

关键说明

  • 用find('td', string='Seat Comfort')精准定位评分项,避免原代码依赖固定索引的风险(页面结构变动会导致索引失效)
  • 加入try-except处理评论缺失某项评分的情况,保证代码稳定运行
  • 其他评分项可完全复用该逻辑,只需替换标签文本(如'Food & Beverages'、'Inflight Entertainment'等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:11:05