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

需点击显示的表格数据爬取失败问题求助(附代码)

解决方案与多日数据爬取指导

一、修复当前表格爬取问题

你的报错是因为目标板块默认显示图表,表格未渲染,必须先触发“Tabell”按钮的点击操作。以下是修复后的代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import pandas as pd

# 初始化浏览器
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://www.svk.se/om-kraftsystemet/kontrollrummet/")

try:
    # 等待"Förbrukning I Sverige"板块的Tabell按钮加载完成并点击
    tabell_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//div[contains(@class, 'section-forbrukning')]//button[text()='Tabell']"))
    )
    tabell_btn.click()

    # 等待表格加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "div.section-forbrukning table"))
    )

    # 获取页面源码并提取表格
    html = driver.page_source
    tables = pd.read_html(html)
    # 取最后一个表格(对应目标板块)
    data = tables[-1]
    print(data.head())

finally:
    # 确保浏览器关闭
    driver.quit()

关键说明:

  • 用WebDriverWait等待元素加载,避免页面异步渲染导致的元素找不到问题
  • 通过XPATH精准定位目标板块下的“Tabell”按钮,防止误点其他板块的切换按钮
  • 等待表格出现后再提取源码,保证pd.read_html能捕获到有效表格数据

二、多日数据爬取方向指导

  1. 分析页面日期交互逻辑

    • 观察页面的日期控件:如果有日历选择或前后日期切换按钮,用Selenium模拟点击切换日期,重复执行“点击Tabell→提取表格”的流程
    • 检查URL参数:切换日期后如果URL带有日期参数(如?date=2024-05-20),可以直接构造不同日期的URL,减少浏览器交互操作
  2. 批量爬取与数据存储

    • 用datetime模块生成需要爬取的连续日期列表
    • 循环遍历日期列表,每次切换日期后提取表格数据,将数据追加到DataFrame或直接写入CSV/数据库
    • 加入随机等待时间(如time.sleep(random.uniform(1,3))),避免请求过于频繁触发反爬
  3. 备选高效方案:调用API

    • 打开浏览器开发者工具(F12),切换到“网络”标签,操作日期切换或Tabell按钮,观察是否有XHR/fetch请求获取表格数据
    • 如果找到对应的API接口,直接用requests库发送请求解析JSON数据,效率远高于Selenium模拟浏览器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:10:28