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

如何从TradingView印度股市收益页加载本周数据至DataFrame

抓取TradingView印度股市本周收益数据并导入Pandas DataFrame

针对无法选中TradingView收益日历中「This Week」标签的问题,以下是基于Selenium和Pandas的完整解决方案,可准确定位标签并提取本周数据至DataFrame:

import time

from selenium import webdriver
from selenium.webdriver.common.by import By

import pandas as pd
pd.set_option('display.max_rows', 50000)
pd.set_option('display.max_columns', 100)
pd.set_option('display.width', 10000)

# 初始化Chrome浏览器并打开目标页面
driver = webdriver.Chrome()
driver.get("https://in.tradingview.com/markets/stocks-india/earnings/")

# 定位并点击「This Week」标签
driver.find_element(By.XPATH, "//div[.='This Week']").click()
# 等待页面加载完成
time.sleep(5)

# 获取可见的表格列(排除隐藏列)
visible_columns = driver.find_elements(By.CSS_SELECTOR, 'div.tv-screener__content-pane thead th:not([class*=i-hidden])')
# 提取每列对应的data-field属性值
data_field = [c.get_attribute('data-field') for c in visible_columns]
# 提取表头文本(处理换行,只取第一行)
header = [c.text.split('\n')[0] for c in visible_columns]

# 遍历每个字段,提取对应列的所有数据
columns = []
for field in data_field:
    column_elements = driver.find_elements(By.XPATH, f"//div[@class='tv-screener__content-pane']//tbody/tr/td[@data-field-key='{field}']")
    # 处理单元格内的换行,替换为短横线
    column_data = [col.text.replace('\n',' - ') for col in column_elements]
    columns.append(column_data)

# 构建Pandas DataFrame并打印
df = pd.DataFrame(dict(zip(header, columns)))
print(df)

# 关闭浏览器
driver.quit()

关键步骤说明:

  • 定位「This Week」标签:使用XPATH //div[.='This Week'] 精准匹配标签文本,解决无法选中的问题;
  • 等待页面加载:点击标签后等待5秒,确保本周数据完全渲染;
  • 提取可见列:通过CSS选择器排除隐藏列,只获取页面上展示的列;
  • 提取列数据:利用每列的data-field-key属性定位对应单元格,统一处理文本换行;
  • DataFrame构建:将表头和列数据对应,生成结构化的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:55:19