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

使用Pandas爬取BMF参考利率页面仅获表头,问题出在网站吗?

问题分析与解决

这不是网站限制,而是页面数据采用动态加载机制导致的:

  • pandas的read_html()只能解析页面静态HTML中的表格,但你目标页面的实际利率数据是通过JavaScript动态渲染注入的,静态HTML里只有表格的表头框架,没有实际数据,所以你只能抓到表头。

调整爬取方式的解决方案

方法1:用Selenium模拟浏览器加载动态内容

通过模拟浏览器完整渲染页面,等待数据加载后再提取表格:

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
import pandas as pd

url = 'https://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-taxas-referenciais-bmf-ptBR.asp'

# 初始化Chrome浏览器(需提前安装对应版本的chromedriver)
driver = webdriver.Chrome()
driver.get(url)

# 等待目标表格加载完成(通过ID定位,更精准)
table = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "tblDados"))
)
# 提取表格的HTML代码
table_html = table.get_attribute('outerHTML')

# 用pandas解析表格数据
df = pd.read_html(table_html, decimal=',', thousands='.')[0]

# 关闭浏览器
driver.quit()

# 查看结果
print(df)

方法2:直接抓取数据接口(更高效)

打开浏览器开发者工具(F12)→ 切换到Network标签→ 刷新页面,筛选XHR请求,找到加载利率数据的API接口,直接请求该接口获取JSON格式的数据,再转换成DataFrame。这种方式不需要模拟浏览器,速度更快,但需要分析接口的请求参数和返回结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:13:13