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

Click()后Selenium无法获取新页面page_source问题求助

解决方案:Tripadvisor翻页后page_source未更新的问题

问题核心是点击下一页后,页面采用异步加载新内容,但你立刻获取page_source时,新内容还没完成渲染,导致拿到的还是第一页的DOM数据。以下是具体解决方法:

关键修复步骤

点击翻页按钮后,必须等待页面内容完成更新,不能直接立即获取源码。可以通过两种可靠的等待方式实现:

方式1:等待页码元素更新

记录当前页码,等待新页面的页码与原页码不同,确认页面切换完成:

# 第一循环结束后,先记录当前页码
current_page = s_city.find(class_="pageNum current")["data-page-number"]

# 点击下一页
python_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.nav.next.rndBtn.ui_button.primary.taLnk[data-page-number][onclick*='STANDARD_PAGINATION']")))
python_button.click()

# 等待页码更新,确保新页面加载完成
WebDriverWait(driver, 20).until(
    lambda d: d.find_element(By.CSS_SELECTOR, "span.pageNum.current").get_attribute("data-page-number") != current_page
)

# 现在获取新页面的源码
s_city = BeautifulSoup(driver.page_source, "lxml")
results = s_city.find(class_="YtrWs")
restaurants = results.find_all("a", class_="Lwqic Cj b")

page_number = s_city.find(class_="pageNum current")["data-page-number"]
print(page_number)

方式2:等待餐厅列表内容更新

记录上一页第一个餐厅的链接,等待新页面的第一个餐厅链接变化,确认列表已刷新:

# 第一循环结束后,记录上一页第一个餐厅的链接
first_restaurant_href = restaurants[0]['href'] if restaurants else ""

# 点击下一页
python_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.nav.next.rndBtn.ui_button.primary.taLnk[data-page-number][onclick*='STANDARD_PAGINATION']")))
python_button.click()

# 等待餐厅列表更新
WebDriverWait(driver, 20).until(
    lambda d: BeautifulSoup(d.page_source, "lxml").find(class_="YtrWs").find_all("a", class_="Lwqic Cj b")[0]['href'] != first_restaurant_href
)

# 后续获取源码和数据的代码同上
s_city = BeautifulSoup(driver.page_source, "lxml")
# ... 其余代码不变

注意事项

  • 不要依赖URL变化判断页面切换:Tripadvisor翻页采用AJAX异步加载,URL不会更新,这种判断方式无效。
  • 选择器需匹配当前页面:如果Tripadvisor更新了页面class名称,要及时调整CSS选择器或BeautifulSoup的查找条件。
  • 延长等待时间:如果网络较慢,可将WebDriverWait的超时时间从20秒适当延长,避免超时错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:45:44