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

使用Python Selenium无法获取币安期货页面tbody下tr标签数据的问题

解决Selenium无法获取币安期货页面tbody下tr数据的问题

问题原因

  1. 币安该页面采用动态渲染,直接调用find_elements时,目标元素可能还没加载完成,导致返回空结果。
  2. 你的代码定位的是tbody标签本身,而非其下的tr元素,自然拿不到你需要的行数据。

可行解决方案

下面是完整的代码示例,包含等待元素加载、提取数据和统计tr数量的逻辑:

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

# 初始化浏览器驱动
driver = webdriver.Chrome()
driver.get("https://www.binance.com/en/futures-activity/leaderboard/user/um?encryptedUid=14507FCBFF9FBE584EDDEC628C4593B8")

try:
    # 显式等待tbody加载完成,最长等待10秒(可根据网络情况调整)
    tbody = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "tbody"))
    )
    # 获取tbody下所有的tr元素
    tr_elements = tbody.find_elements(By.TAG_NAME, "tr")
    
    # 输出tr标签数量
    print(f"页面中共有 {len(tr_elements)} 个tr标签")
    
    # 提取每个tr中的数据到列表
    result_list = []
    for tr in tr_elements:
        # 获取当前tr下所有td的文本,过滤掉空内容
        row_data = [td.text.strip() for td in tr.find_elements(By.TAG_NAME, "td") if td.text.strip()]
        result_list.append(row_data)
    
    # 打印提取到的数据
    print("提取到的行数据:")
    for row in result_list:
        print(row)
finally:
    # 关闭浏览器
    driver.quit()

关键细节说明

  • 显式等待:这是处理动态加载页面的核心,WebDriverWait会等待目标元素出现在DOM中再执行后续操作,避免因元素未加载导致的空结果。
  • 局部定位:先定位到tbody再查找内部的tr,能避免全局查找时匹配到页面其他无关的tr元素。
  • 数据过滤:提取td文本时去掉空白字符并过滤空内容,保证最终数据的整洁性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:30:24