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
相关产品推荐
相关产品推荐

