Ordelio

Cómo guardar una tabla de una página web como archivo CSV

Un archivo CSV es texto plano que puede leer cualquier hoja de cálculo y base de datos. Pasar una tabla web a este formato es fácil; lo difícil es hacerlo sin que se corrompan los acentos, con el separador equivocado o perdiendo ceros. Aquí tienes cuatro métodos y dónde falla cada uno.

1. Copiar, pegar en Excel y luego Guardar como

Selecciona la tabla, cópiala, pégala en una hoja de Excel en blanco, utiliza el comando Guardar como del menú Archivo y elige el tipo de archivo CSV UTF-8.

Bueno para: una tabla pequeña que necesitas una vez, cuando ya tienes Excel abierto.

Dónde falla: si eliges el tipo CSV normal en lugar de CSV UTF-8, cualquier carácter fuera de tu página de códigos de Windows (acentos, cirílico, chino) se convierte en un signo de interrogación. Excel también escribe el separador configurado en tu región de Windows, por lo que en muchos sistemas europeos tu archivo «separado por comas» en realidad está separado por punto y coma, y el programa que lo lea puede esperar comas. Al pegar también se pueden perder los ceros iniciales (un código como 01234 se convierte en 1234), convertir valores como 1-2 en fechas y la selección puede incluir texto de alrededor de la tabla.

2. Hojas de cálculo de Google: pegar y luego Descargar

Pega la tabla en un archivo de Hojas de cálculo de Google, abre el menú Archivo, ve a Descargar y elige el formato valores separados por comas (.csv).

Bueno para: cualquier ordenador con navegador, sin necesidad de Excel, y el archivo siempre está en UTF-8.

Dónde falla: el archivo siempre utiliza comas, por lo que Excel en una región con coma decimal puede no separarlo en columnas al hacer doble clic. Solo se descarga la hoja que estás viendo, no todo el archivo. Al igual que Excel, Hojas de cálculo puede convertir algunos valores en fechas o números al pegarlos.

3. Python: pandas.read_html

Si ya trabajas en Python, pandas lee todas las tablas de una página y escribe una en formato CSV:

pandas.read_html("https://example.com/page")[0].to_csv("table.csv", index=False)

El número entre corchetes es la posición de la tabla en la página (0 para la primera). Necesitas tener instalados pandas y lxml.

Bueno para: la misma página cada semana, o cientos de páginas, dentro de un script.

Dónde falla: algunos sitios rechazan la solicitud con un error 403 porque no parece un navegador, por lo que tienes que descargar la página tú mismo y pasar el HTML a pandas. No puede ver páginas protegidas por inicio de sesión ni tablas generadas por JavaScript después de que cargue la página. Las marcas de notas a pie de página como [1] se quedan en los encabezados y valores, y los números enteros pueden aparecer como 8021407192.0 en cuanto una columna tenga una celda vacía.

4. Una extensión de navegador: un clic en la página que estás leyendo

Una extensión funciona en la página exactamente tal como la ves en tu navegador, por lo que también funciona después de iniciar sesión y en tablas creadas con JavaScript. Nosotros creamos una, Ordelio Copiar Tablas (gratuita, sin límites de filas):

  1. Abre la página y haz clic en el icono de la extensión (o presiona Alt+Mayús+Y). Muestra una lista con todas las tablas de la página, ordenadas de mayor a menor; al pasar el ratón por encima, se ilumina.
  2. Haz clic en CSV: el navegador guarda un archivo con esa tabla. Los acentos se conservan porque el archivo está en UTF-8 con una marca que se lo indica a Excel, y el separador es un punto y coma si tu idioma utiliza comas para los decimales (puedes forzar la coma, el punto y coma o el tabulador en las opciones).

También elimina las marcas de notas a pie de página como [1], repite las celdas combinadas para que las columnas no se desalinien y escribe códigos como 01234 en el archivo exactamente igual que en la página (es posible que una hoja de cálculo que abra el archivo los convierta en números).

Dónde falla: guarda lo que hay en la página en ese momento, por lo que una tabla dividida en varias páginas requiere un archivo por página, y no puede actualizar el archivo por sí sola como lo haría un script.

Obtener Ordelio Copiar Tablas para Microsoft Edge Versiones para Chrome y Firefox: en revisión.

Cuál utilizar

Guardar como en ExcelHojas de cálculo de GooglepandasExtensión
Páginas detrás de un inicio de sesiónSí (copiando)Sí (copiando)NoSí
Los acentos salen bienSolo con CSV UTF-8SíSíSí
Separador a elegirNo (lo fija Windows)No (siempre comas)Sí (un parámetro)Sí (una opción)
Cientos de páginas de golpeNoNoSíNo
Tiempo para una página nuevaUn minuto aprox.Un minuto aprox.Minutos la primera vezUnos segundos

En resumen: para un script que se ejecuta cada semana en páginas públicas, utiliza pandas. Para una extracción puntual de una página que estás leyendo, especialmente si está protegida por inicio de sesión, guárdala directamente desde la página.

¿Has encontrado una tabla que ninguno de estos métodos procesa? Dínoslo, leemos todos los mensajes.