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

Selenium处理新窗口:如何提取指定表格的全部文本?

解决方案

你当前的代码已经成功切换到新窗口,接下来需要等待表格元素加载完成(避免硬编码time.sleep),然后定位目标表格并提取所有单元格文本。以下是完整的实现代码:

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

options = webdriver.EdgeOptions()
browser = webdriver.Edge(options=options)

browser.maximize_window()
browser.get("http://www.example.com")

browser.find_element(By.CSS_SELECTOR, "input[type='submit']").click()

# 用显式等待替代time.sleep,等待首页目标链接加载完成
WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "Details about me"))
)

browser.find_element(By.PARTIAL_LINK_TEXT, "Details about me").click()

# 等待新窗口出现并切换
WebDriverWait(browser, 10).until(lambda d: len(d.window_handles) == 2)
window_after = browser.window_handles[1]
browser.switch_to.window(window_after)

# 等待目标表格加载完成
table = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "table[border='1']"))
)

# 提取表头(处理<th>中的<br>标签)
headers = []
for th in table.find_elements(By.TAG_NAME, "th"):
    # 合并<br>分隔的文本
    header_text = " ".join(th.text.splitlines())
    headers.append(header_text.strip())

# 提取表格数据行
table_data = []
for row in table.find_elements(By.TAG_NAME, "tr")[1:]:  # 跳过表头行
    cells = row.find_elements(By.TAG_NAME, "td")
    row_data = [cell.text.strip() for cell in cells]
    # 组合成字典(可选,也可以直接存列表)
    table_data.append(dict(zip(headers, row_data)))

# 打印提取结果
print("提取的表格数据:")
for item in table_data:
    print(item)

# 关闭浏览器
browser.quit()

关键步骤说明

  • 显式等待替代time.sleep:使用WebDriverWait确保元素加载完成,避免因网络延迟导致的元素找不到问题,比硬编码等待时间更可靠。
  • 定位目标表格:通过CSS选择器table[border='1']精准定位带边框的目标表格,避免页面中其他表格干扰。
  • 处理表头换行:表头中的<br>标签会导致文本换行,用splitlines()拆分后再合并,得到完整的表头文本(比如将"Field 1\nTimes"转为"Field 1 Times")。
  • 结构化提取数据:将每行数据和表头组合成字典,方便后续处理或存储。

如果只需要提取纯文本(不需要结构化),可以直接获取表格的完整文本:

print(table.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:51:21