使用pandas.read_html抓取开放数据网页表格报错:未找到表格
解决pandas.read_html读取科希策开放数据页面无表格的问题
问题原因
你访问的https://opendata.kosice.sk/datasets/kosice-mesto::v%C3%BDmery-typov-pozemkov-1/explore是数据的可视化探索页面,页面中的表格是通过JavaScript动态渲染生成的。requests.get()只能获取页面的静态HTML源码,而这份源码里根本没有<table>标签,所以pandas.read_html()找不到可解析的表格。
解决方案
方法1:直接调用开放数据的CSV下载接口(推荐)
科希策开放数据平台提供了直接的CSV格式数据下载链接,无需处理动态页面,效率更高:
- 打开目标页面,点击右上角的下载按钮,选择CSV格式;
- 右键点击下载选项,复制链接地址;
- 用
pandas.read_csv()直接读取该链接:
import pandas as pd # 替换为你复制的CSV下载链接 csv_url = "https://opendata.kosice.sk/datasets/9e3794408e3b436181b09207199339a1_0.csv" df = pd.read_csv(csv_url) print(df.head())
方法2:用Selenium获取动态渲染后的页面
如果必须通过网页渲染获取表格,可以用Selenium模拟浏览器加载页面,再提取HTML:
from selenium import webdriver 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 url = 'https://opendata.kosice.sk/datasets/kosice-mesto::v%C3%BDmery-typov-pozemkov-1/explore' driver = webdriver.Chrome() # 需要提前安装ChromeDriver并配置环境变量 driver.get(url) # 等待表格加载完成(显式等待更可靠) WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, "table")) ) html = driver.page_source df_list = pd.read_html(html) driver.quit() if df_list: df = df_list[0] print(df.head()) else: print("未找到表格,请检查页面加载情况")
内容的提问来源于stack exchange,提问作者314mip
相关产品推荐
相关产品推荐

