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

Selenium新标签页切换后,Beautiful Soup爬取数据仍来自原页面求助

问题解决方法

核心原因是:调用driver.switch_to.new_window('tab')后,浏览器虽打开新标签,但WebDriver的上下文仍停留在原标签页,后续操作自然还是针对原页面。解决关键是主动切换WebDriver的上下文到新标签页,具体方法如下:

1. 切换到最新打开的标签页

新标签页的句柄会被添加到窗口句柄列表的末尾,直接切换到最后一个句柄即可:

# 打开新标签页后,立即执行切换操作
driver.switch_to.new_window('tab')
# 获取所有窗口句柄
all_handles = driver.window_handles
# 切换到新标签页(列表最后一个元素)
driver.switch_to.window(all_handles[-1])

之后再执行爬取操作,就能获取新标签页的数据。

2. 等待页面加载完成

如果新标签页需要加载内容(比如你需要在新标签打开目标URL),必须等待页面加载完成后再爬取,避免获取到空白或未加载完全的内容:

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

# 在新标签打开目标URL
driver.get("https://目标页面URL")
# 等待页面主体加载完成,最长等待10秒
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, 'body')))

# 爬取数据
page_data = driver.page_source

3. 精准定位目标标签页(多标签场景)

如果存在多个标签页,不确定新标签的位置,可以通过页面标题或URL匹配来定位:

target_title = "目标页面的标题"
for handle in driver.window_handles:
    driver.switch_to.window(handle)
    if target_title in driver.title:
        break

# 确认切换后爬取数据
print(driver.current_url)  # 验证是否切换到目标页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:55:30