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

爬虫脚本访问Hotels.com评论页URL时自动跳回主页面的问题排查

解决Hotels.com评论页重定向回主页的问题

我之前碰到过类似的Hotels.com页面路由问题,你遇到的核心矛盾在于:评论页的访问依赖当前会话的状态(比如Cookie、页面交互轨迹),直接用driver.get(new_url)重新加载时,丢失了这些关键的会话上下文,网站会判定你没有正常进入评论流程,从而触发重定向回到酒店主页面。

为什么会出现这种情况?

Hotels.com的评论页并不是一个能独立访问的静态页面——它需要验证你是从酒店详情页逐步进入的,或者依赖会话中存储的用户标识、访问记录。当你直接请求评论页URL时,网站检测不到这些验证信息,就会把你重定向回主页面。

最直接的解决方案:不要重新加载评论页

既然你已经通过点击评论按钮进入了评论页,完全不需要调用driver.get(new_url),直接在当前页面开始抓取评论即可。下面是修改后的代码片段,帮你推进抓取流程:

# 点击评论按钮进入评论页后,直接处理当前页面
# 等待评论容器加载完成
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'div[data-stid="reviews-container"]')))

# 示例:抓取当前页的评论核心内容
reviews_list = driver.find_elements_by_css_selector('div[class="section-review"]')
for review in reviews_list:
    # 提取评论标题
    title = review.find_element_by_css_selector('h3[class="section-review-title"]').text
    # 提取评论正文
    content = review.find_element_by_css_selector('p[class="section-review-body"]').text
    # 提取评分(从aria-label属性获取)
    rating = review.find_element_by_css_selector('div[class="section-review-stars"]').get_attribute('aria-label')
    print(f"标题: {title}\n内容: {content}\n评分: {rating}\n---")

# 处理分页逻辑(抓取所有评论)
while True:
    try:
        # 等待"下一页"按钮可点击
        next_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a[aria-label="Next page"]')))
        next_btn.click()
        time.sleep(3)  # 等待新页面评论加载完成
        # 重复抓取当前页评论的逻辑
        new_reviews = driver.find_elements_by_css_selector('div[class="section-review"]')
        for review in new_reviews:
            # 复用上述提取逻辑即可
            pass
    except Exception as e:
        print("已加载完所有评论,退出分页循环")
        break

如果确实需要保存评论页URL后续访问怎么办?

如果因为特殊场景必须保存评论页URL并后续访问,需要确保会话上下文一致:

  • 不要关闭当前浏览器会话,直接复用已有的driver实例访问URL
  • 或者手动保存当前会话的Cookie,后续重新初始化浏览器时注入这些Cookie:
# 进入评论页后,保存当前会话的Cookie
current_cookies = driver.get_cookies()

# 后续重新访问时,先打开Hotels.com主站,再注入Cookie,最后访问评论页
driver.get('https://fr.hotels.com/')
for cookie in current_cookies:
    driver.add_cookie(cookie)
driver.get(new_url)

不过这种方式不如直接在当前页面处理可靠,因为Hotels.com的Cookie可能存在过期时间或动态验证逻辑。

总结来说:最稳妥的方式就是点击评论按钮后直接在当前页面操作,不要尝试重新加载URL,这样就能彻底避免重定向问题,顺利抓取所有评论内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:32:28