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

Web Scraping:如何爬取带日期选择器的图片格式表格并导入Pandas

问题描述

我是Web Scraping新手,想要提取带日期选择器的网页中的表格数据导入Pandas。但该表格为图片格式,无法右键选中复制粘贴内容;我无法定位到该表格图片,对控制台输出的页面内容执行ctrl+f搜索也无法匹配到表格内的任意数值,请问该如何实现?
表格示例图

当前编写的代码如下:

from bs4 import BeautifulSoup as bs
import pandas as pd
pd.set_option('display.max_colwidth', 500)
import time
import requests
import pytesseract as pytes
import random
myURL =  "https://www.netztransparenz.de/EEG/Marktpraemie/EPEX-SPOT-Stundenkontrakte"
page = requests.get(myURL)

print (page)

soup = bs(page.content,"html.parser")

print(soup) # <--- ctrl + F the result to locate values seen in the table
原因分析
  • 你使用的requests库仅能获取页面初始静态HTML,该站点的表格数据是客户端JavaScript动态加载的,静态源码本身不包含表格内容,所以你无法搜索到对应数值
  • 表格为图片格式说明站点大概率用Canvas渲染表格、或是后端直接返回生成好的表格图片,没有暴露原始结构化数据在静态页面中
解决方法

方法1:抓接口拿结构化数据(首选,准确率最高)

  • 打开浏览器F12控制台,切换到「网络」面板,选择「Fetch/XHR」筛选,手动选择目标日期触发表格加载,遍历控制台中新增的请求,找到返回内容包含表格数值的接口
  • 核对该接口的请求头、请求参数(包含日期参数、User-Agent、校验token等),用requests模拟该接口请求,直接拿到JSON/CSV格式的原始结构化数据,可直接转换为Pandas的DataFrame,无需后续OCR识别

方法2:动态渲染+OCR识别(适用于无法抓到接口的场景)

如果确认没有暴露数据接口,可通过动态渲染工具加载完整页面后截图做OCR识别:

  • 用Selenium或Playwright这类动态渲染工具,模拟浏览器打开页面、选择目标日期,等待表格完全加载
  • 定位到表格元素后单独截图,用支持表格结构化识别的OCR工具(如PaddleOCR表格识别模型)处理截图,将识别到的行列内容整理为DataFrame格式
  • 参考代码结构:
# 依赖安装:pip install selenium paddleocr pandas
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import pandas as pd
from paddleocr import PaddleOCR

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("https://www.netztransparenz.de/EEG/Marktpraemie/EPEX-SPOT-Stundenkontrakte")
time.sleep(3)

# 模拟选择日期操作,替换为对应元素的选择器
date_input = driver.find_element(By.CSS_SELECTOR, "日期选择器元素的CSS选择器")
date_input.send_keys("目标日期")
search_btn = driver.find_element(By.CSS_SELECTOR, "查询按钮元素的CSS选择器")
search_btn.click()
time.sleep(2)

# 定位表格元素并截图
table_ele = driver.find_element(By.CSS_SELECTOR, "表格元素的CSS选择器")
table_ele.screenshot("table.png")

# 德语站点加载德语OCR模型识别,准确率更高
ocr = PaddleOCR(use_angle_cls=True, lang='de')
ocr_result = ocr.ocr("table.png", cls=True)
# 后续处理识别结果,匹配行列关系,整理为DataFrame即可

注意事项

  • 若站点有反爬策略,需补充请求头、控制请求频率,必要时使用代理
  • OCR识别结果需做数值校验,避免识别误差导致数据错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:30:05