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

如何在Selenium中获取搜索跳转后的新页面内容以爬取数据?

解决Selenium中搜索跳转新页面后无法获取内容的问题

问题核心是:搜索后网站打开了新的浏览器窗口,但你的browser对象仍然指向初始的首页窗口,所以无法访问新页面的内容。需要手动切换到新窗口的句柄。

解决步骤:

  • 提交搜索后,获取当前所有窗口的句柄列表
  • 切换到最新打开的窗口(列表最后一个元素)
  • 等待新页面加载完成,再进行数据爬取操作

修改后的完整代码:

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

cfr = input("Enter the title of your desired Code of Federal Regulations: ")

browser = webdriver.Firefox()
url = "https://ecfr.gov"
browser.get(url)

# 点击搜索框、输入内容并提交
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.ID, "suggestions"))).click()
search_box = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.ID, "suggestion_query")))
search_box.send_keys(cfr)
search_box.submit()

# 获取所有窗口句柄,切换到新打开的窗口
window_handles = browser.window_handles
# 切换到最后一个窗口(新打开的页面)
browser.switch_to.window(window_handles[-1])

# 等待新页面加载完成,可根据页面特征元素调整等待条件
WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.TAG_NAME, "body")))

# 现在可以获取新页面的URL和内容了
new_page_url = browser.current_url
print(f"新页面URL: {new_page_url}")

# 在此处添加你的爬取逻辑,比如提取特定数据
# 示例:target_content = browser.find_element(By.CSS_SELECTOR, "your-target-selector").text

# 若需切回原窗口,可执行:
# browser.switch_to.window(window_handles[0])

# 爬取完成后关闭浏览器
# browser.quit()

关键说明:

  • browser.window_handles返回当前浏览器所有窗口的句柄列表,顺序对应窗口打开的先后
  • browser.switch_to.window()用于切换到指定句柄的窗口
  • 切换窗口后必须等待页面加载完成(用WebDriverWait等待关键元素),避免因页面未加载完成导致元素查找失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:15:10