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

使用BS4抓取币安合约资金历史表格仅获表头,求解决方案

无法提取币安期货资金历史表格完整数据的解决方案

我的问题:
尝试从网址https://www.binance.com/en/futures/funding-history/0提取表格数据,但以下代码仅能提取表格的表头部分:

import requests
from bs4 import BeautifulSoup
r = requests.get('https://www.binance.com/en/futures/funding-history/0')
soup = BeautifulSoup(r.text, 'html.parser')
resultsTable = soup.findChildren('table')[0]
rows = resultsTable.findChildren(['tr'])
print(rows)

请问我遗漏了什么内容,或是有更优的实现方法?


问题根源:动态加载的数据

你用requests拿到的只是页面的初始静态HTML,而币安这个页面的表格数据是通过JavaScript异步请求后端API加载的——也就是说,当你用requests请求时,表格的内容还没被渲染出来,只有表头是写在初始HTML里的,所以BeautifulSoup只能抓到表头。

两种最优解决方案

方案1:直接调用官方API(推荐)

币安提供了公开的期货资金费率历史API,这比解析HTML高效100倍,而且数据格式更规整(JSON),还不容易因为页面改版失效。

示例代码:

import requests

# 替换为你需要查询的交易对,比如BTCUSDT、ETHUSDT
target_symbol = "BTCUSDT"
api_url = "https://www.binance.com/fapi/v1/fundingRateHistory"

# 构造请求参数(limit最多支持100条,可按需调整)
request_params = {
    "symbol": target_symbol,
    "limit": 50
}

# 发送请求并解析JSON
response = requests.get(api_url, params=request_params)
funding_data = response.json()

# 打印并处理数据
for entry in funding_data:
    print(f"交易对: {entry['symbol']}")
    print(f"资金费率: {float(entry['fundingRate']) * 100}%")
    print(f"资金结算时间: {entry['fundingTime']}\n")

方案2:用Selenium模拟浏览器加载页面

如果你不想找API,或者需要处理更复杂的动态渲染场景,可以用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

# 初始化Chrome浏览器(需要提前安装ChromeDriver并配置环境变量)
driver = webdriver.Chrome()
driver.get("https://www.binance.com/en/futures/funding-history/0")

# 等待表格数据加载完成(最多等待10秒)
wait = WebDriverWait(driver, 10)
# 等待所有表格行加载出来
all_rows = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "table tr")))

# 提取数据(跳过第一行表头)
for row in all_rows[1:]:
    columns = row.find_elements(By.TAG_NAME, "td")
    row_data = [col.text.strip() for col in columns]
    print(row_data)

# 关闭浏览器
driver.quit()

补充说明

  • 方案1的API是币安官方提供的,稳定性和可靠性远高于解析HTML,建议优先使用。
  • 如果你需要查询特定时间范围的资金历史,可以在API参数中添加startTime和endTime(毫秒级时间戳)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:21:19