En resumen: Para extraer datos de tablas JavaScript en Python rara vez se necesita un navegador sin interfaz gráfica. Abre DevTools, busca el punto final JSON que alimenta la tabla, reproduce el proceso con requests, paginarlo y recurrir a Playwright solo cuando la llamada de red esté firmada, encriptada o sellada de alguna otra forma.Has escrito el código obvio. requests.get(url), pasas el HTML a BeautifulSoup, extraes las filas del <table>. El script se ejecuta, el archivo se guarda en el disco y el CSV está vacío. Bienvenido al scraping de tablas JavaScript, donde las filas que ves en tu navegador no existen en el documento que el servidor devolvió realmente.
Las tablas estáticas envían los datos dentro del HTML inicial. Las tablas dinámicas (también llamadas tablas AJAX o renderizadas con JavaScript) envían un contenedor casi vacío; luego, un script en la página llama a un punto final JSON e inyecta filas en el DOM tras la carga. Si no ejecutas ese script, no ves esas filas. Iniciar un navegador completo para solucionar esto es una solución excesiva para lo que suele ser un problema menor.
Esta guía toma el camino más corto. Comenzaremos con una escalera de decisiones para que dejes de preguntarte si debes recurrir a requests o un motor de navegador, y luego te guiaremos para encontrar el punto final JSON subyacente en DevTools, reproducirlo en Python con paginación y autenticación, analizarlo en filas limpias y exportarlo a CSV, JSON Lines o SQLite. Playwright está aquí como un recurso real para sitios que ocultan la llamada de red, no como la herramienta predeterminada. Al final tendrás un script que podrás volver a ejecutar el próximo trimestre sin tener que reescribirlo desde cero.




