DEV Community

Cover image for Extrayendo Tablas Financieras: Acciones, ETFs y Datos de Mercado
circobit
circobit

Posted on

Extrayendo Tablas Financieras: Acciones, ETFs y Datos de Mercado

Los sitios financieros son minas de oro de datos tabulares. Precios de acciones, tenencias de ETFs, índices de mercado, reportes de ganancias—todos en tablas HTML, esperando ser analizados.

Pero obtener esos datos en un formato utilizable no siempre es sencillo.

Esta guía cubre los desafíos comunes con tablas financieras y soluciones prácticas para extraerlas limpiamente.

Por Qué las Tablas Financieras Son Complicadas

Los datos financieros tienen peculiaridades que rompen los métodos de extracción ingenuos.

Formatos Numéricos Mixtos

Los sitios de EEUU muestran 1,234.56. Los sitios europeos muestran 1.234,56. Algunos portales financieros mezclan ambos dependiendo de la fuente de datos.

Copiar y pegar en Excel frecuentemente destroza estos formatos. Un millar se convierte en decimal. Una fecha se convierte en número. Caos.

Actualizaciones en Tiempo Real

Muchas tablas financieras se actualizan dinámicamente. El DOM cambia después de que la página carga. Si haces scraping demasiado temprano, obtienes datos obsoletos o celdas vacías.

Estructuras Anidadas

Las tablas de tenencias frecuentemente tienen filas expandibles. Las principales tenencias de un fondo pueden mostrar 10 filas, con un botón "Mostrar las 50" escondiendo el resto. Los datos ocultos existen en la página pero no son visibles.

Símbolos de Porcentaje y Moneda

+2.34% y $1,234 se ven bien para humanos. Para una planilla, son cadenas de texto que no se pueden ordenar ni calcular correctamente.

Fuentes Comunes de Datos Financieros

Yahoo Finance

Cotizaciones de acciones, datos históricos, tenencias de portafolio. Las tablas son relativamente limpias pero se actualizan dinámicamente.

Tip: Espera a que la página cargue completamente antes de extraer. El render inicial frecuentemente muestra placeholders de carga.

Google Finance

Tablas mínimas, mayormente tarjetas y gráficos. Menos útil para extracción masiva.

Para un tutorial detallado, mira nuestra guía sobre cómo exportar datos de CRM a Excel que cubre técnicas similares de extracción de datos web.

Morningstar

Tenencias de fondos, datos de rendimiento, desgloses sectoriales. Las tablas están bien estructuradas pero frecuentemente están paginadas.

Tip: Busca controles de "Mostrar Todo" o paginación. La primera página puede mostrar solo las 10 principales tenencias.

SEC EDGAR

Los filings contienen tablas, pero están embebidas en documentos complejos. Los reportes 10-K y 10-Q tienen estados financieros como tablas HTML.

Tip: Las tablas están ahí, pero rodeadas de texto legal. Identifica la tabla específica que necesitas antes de extraer.

MarketWatch, Investing.com, Reuters

Enfocados en noticias pero incluyen tablas de datos para cotizaciones, ganancias y calendarios económicos.

Estrategias de Extracción

Estrategia 1: Exportación Directa

El enfoque más simple—si solo necesitas los datos una vez.

Herramientas como HTML Table Exporter detectan tablas en la página y exportan directamente a CSV o Excel. Sin código necesario.

Para datos financieros específicamente:

  • Usa presets de limpieza que normalicen formatos numéricos
  • Exporta a CSV si vas a procesarlos más; Excel si es el destino final
  • Verifica que el contenido dinámico haya cargado antes de exportar

Estrategia 2: Python + Pandas

Para extracción repetida o integración en pipelines.

import pandas as pd

# Extracción básica
tables = pd.read_html('https://ejemplo.com/datos-acciones')
df = tables[0]  # Primera tabla de la página

# Con especificación de encabezado
df = pd.read_html(url, header=0)[0]

# Manejando encoding
df = pd.read_html(url, encoding='utf-8')[0]
Enter fullscreen mode Exit fullscreen mode

Limitaciones: read_html no ejecuta JavaScript. Las tablas dinámicas no van a cargar.

Estrategia 3: Selenium para Contenido Dinámico

Cuando las tablas cargan vía JavaScript:

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

driver = webdriver.Chrome()
driver.get('https://ejemplo.com/datos-acciones')

# Esperar a que la tabla cargue
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, "table"))
)

# Extraer
html = driver.page_source
tables = pd.read_html(html)
Enter fullscreen mode Exit fullscreen mode

Compromiso: Más configuración, pero maneja contenido renderizado con JavaScript.

Limpieza de Datos Financieros

Las exportaciones crudas generalmente necesitan limpieza.

Eliminando Símbolos de Moneda

df['Precio'] = df['Precio'].replace('[\$,]', '', regex=True).astype(float)
Enter fullscreen mode Exit fullscreen mode

Manejando Porcentajes

df['Cambio'] = df['Cambio'].str.rstrip('%').astype(float) / 100
Enter fullscreen mode Exit fullscreen mode

Normalizando Formatos Numéricos

Para formato europeo (1.234,56 → 1234.56):

df['Valor'] = df['Valor'].str.replace('.', '', regex=False)
df['Valor'] = df['Valor'].str.replace(',', '.', regex=False).astype(float)
Enter fullscreen mode Exit fullscreen mode

Parseando Fechas

Los sitios financieros usan formatos de fecha inconsistentes.

df['Fecha'] = pd.to_datetime(df['Fecha'], format='mixed')
Enter fullscreen mode Exit fullscreen mode

Ejemplo Práctico: Tenencias de ETF

Supongamos que quieres las tenencias de un fondo para análisis.

La forma manual:

  1. Visitá la página del fondo
  2. Encontrá la tabla de tenencias
  3. Copiar y pegar en Excel
  4. Pasá 20 minutos arreglando el formato

La forma eficiente:

  1. Navegá a la tabla de tenencias
  2. Exporta directamente a Excel con normalización de números
  3. Listo

La diferencia se acumula. Si haces seguimiento de múltiples fondos mensualmente, la automatización ahorra horas.

Casos Extremos a Vigilar

Tablas Divididas en Pestañas

Algunos sitios muestran datos diferentes (Tenencias, Rendimiento, Riesgo) en pestañas que cargan tablas distintas. Cada pestaña es una extracción separada.

Notas al Pie y Anotaciones

Las tablas financieras aman los asteriscos y las dagas. 1,234* puede significar "estimado" pero rompe el parsing numérico.

Solución: Eliminar sufijos no numéricos antes de la conversión.

Filas de Encabezado Repetidas

Las tablas largas a veces repiten encabezados en medio de la tabla para legibilidad. Tu extracción puede incluir filas de encabezado duplicadas como datos.

Solución: Filtrar filas donde todos los valores coinciden con el encabezado.

Cuándo Automatizar vs. Cuándo Exportar Manualmente

La exportación manual funciona cuando:

  • Análisis único
  • Agenda irregular
  • Tablas diferentes cada vez

La automatización funciona cuando:

  • Extracciones recurrentes diarias/semanales
  • Mismas tablas, misma estructura
  • Integración en pipelines más grandes

Para la mayoría de los analistas que hacen investigación ocasional, la exportación manual con una buena herramienta es más rápida que construir y mantener scripts.

Resumen

Las tablas financieras son valiosas pero desordenadas. Los desafíos clave son formatos numéricos, carga dinámica y estructura inconsistente.

Para extracciones rápidas, las herramientas de navegador manejan la mayoría de los casos. Para pipelines, Python con esperas apropiadas y limpieza maneja el resto.

El objetivo no es automatización perfecta—es obtener datos limpios con la mínima fricción.


¿Necesitas exportar tablas financieras rápidamente? Más información en gauchogrid.com/es/html-table-exporter o prueba HTML Table Exporter gratis en la Chrome Web Store.

Top comments (0)