无法抓取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
相关产品推荐
相关产品推荐

