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

求助:如何抓取指定日期无ID的目标网页表格数据?

解决方案

方法1:通过日期关联定位表格

目标页面中2010年1月29日的表格通常会和对应日期标签关联,你可以先定位到日期元素,再通过兄弟/父节点定位相邻表格:

# 定位包含目标日期的元素(适配页面可能的日期文本格式)
date_element = driver.find_element(By.XPATH, "//*[contains(text(), '29 de enero de 2010') or contains(text(), '2010-01-29')]")
# 获取日期元素的下一个表格节点
target_table = date_element.find_element(By.XPATH, "./following-sibling::table[1]")
# 提取表格数据
rows = target_table.find_elements(By.TAG_NAME, "tr")
table_data = []
for row in rows:
    cols = row.find_elements(By.TAG_NAME, "td")
    row_data = [col.text.strip() for col in cols]
    if row_data:  # 过滤空行
        table_data.append(row_data)

方法2:遍历区域内表格,匹配内容特征

如果日期和表格关联性弱,可遍历目标区域内所有表格,通过内容特征筛选目标表格:

table_area = driver.find_element(By.ID,'ctl00_cphContent_pnContenidoAnteriorMnASP')
all_tables = table_area.find_elements(By.TAG_NAME, "table")
target_data = []
for table in all_tables:
    table_text = table.text
    # 通过日期关键词匹配目标表格
    if "2010" in table_text and "enero" in table_text and "29" in table_text:
        rows = table.find_elements(By.TAG_NAME, "tr")
        for row in rows:
            cols = row.find_elements(By.TAG_NAME, "td")
            row_data = [col.text.strip() for col in cols]
            if row_data:
                target_data.append(row_data)
        break  # 找到后停止遍历

方法3:利用样式类定位

如果目标表格有独特的CSS类(比如边框类、数据表格类),可结合区域和类名定位:

table_area = driver.find_element(By.ID,'ctl00_cphContent_pnContenidoAnteriorMnASP')
# 替换为页面实际的表格样式类
target_table = table_area.find_element(By.CSS_SELECTOR, "table.table-bordered")
# 提取数据逻辑同方法1

额外优化:确保页面加载完成

添加显式等待避免元素未加载的问题:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待目标区域加载完成
table_area = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'ctl00_cphContent_pnContenidoAnteriorMnASP'))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:52:16