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

无法抓取TripAdvisor清洁度评分值的技术求助

解决TripAdvisor酒店清洁度评分抓取问题

问题核心原因

TripAdvisor的评分模块多为JS动态渲染,静态请求(比如requests库)直接获取页面源码会找不到评分元素;另外新手常用的XPath往往依赖页面随机生成的class/id,页面更新后就会失效。

可行解决方案

1. 静态渲染场景(页面源码能找到评分)

用基于文本关联的稳定XPath定位,避免依赖易变的class/id:

//div[contains(text(),'清洁度')]/following-sibling::div[contains(@class, 'ui_bubble_rating')]/@aria-label

拿到aria-label文本(比如"4.5 颗气泡")后,提取数字部分即可。如果页面直接显示数值,用:

//div[contains(text(),'清洁度')]/following-sibling::div[1]/text()

2. 动态渲染场景(静态请求拿不到数据)

用Selenium/Playwright这类工具渲染JS,示例用Selenium:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("你的目标酒店页面链接")

# 等待清洁度元素加载完成
wait = WebDriverWait(driver, 10)
rating_element = wait.until(EC.presence_of_element_located(
    (By.XPATH, "//div[contains(text(),'清洁度')]/following-sibling::div[contains(@class, 'ui_bubble_rating')]")
))

# 提取评分数值
rating_label = rating_element.get_attribute("aria-label")
cleanliness_score = rating_label.split()[0]
print(f"清洁度评分:{cleanliness_score}")

driver.quit()

反爬注意事项

TripAdvisor反爬严格,操作时注意:

  • 每次请求加2-5秒延时
  • 用代理IP轮换
  • 模拟真实浏览器的User-Agent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:05:01