Python Advanced Series — Scraping Dinámico

11. Extraer datos con login y JS

11. Extract Data with Login and JavaScript

Usa Playwright para extraer información de webs modernas que requieren interacciones, JavaScript o clics de un usuario real.

Use Playwright to extract information from modern websites that require interactions, JavaScript, or real user clicks.

⚠️ Advertencia de ciberseguridad y producción ⚠️ Cybersecurity and production warning

Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, APIs externas, portales con login, datos sensibles, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.

This exercise is for learning and testing only. Do not run scripts against real data, production environments, external APIs, login portals, sensitive data, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.

Objetivo del ejercicio

Exercise objective

Automatizar una navegación controlada en un portal de prueba, capturar una tabla y exportarla a CSV respetando permisos y términos de uso.

Automate controlled navigation in a test portal, capture a table, and export it to CSV while respecting permissions and terms of use.

Datos sintéticos

Synthetic data

campovalor
portalhttps://portal_interno.com/login
accióndescargar reporte
salidareporte.csv

Ejemplo base

Base example

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://portal_interno.com/login")
    page.click("button#descargar_reporte")

Resultado esperado

Expected result

stepstatus
Open browserok
Navigate to portalok
Click report buttonok
Export fileok

Script completo

Complete script

# ==========================================================
# Python Advanced Topic 11
# Extract Data with Login and JavaScript using Playwright
# ==========================================================

# pip install playwright pandas
# playwright install

from playwright.sync_api import sync_playwright
import pandas as pd

# Demo structure only: use only authorized portals and test accounts.
login_url = "https://portal_interno.com/login"

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()

    page.goto(login_url)

    # Example selectors. Replace only in authorized test environments.
    # page.fill("input#username", "test_user")
    # page.fill("input#password", "test_password")
    # page.click("button#login")

    # Example action after login
    # page.click("button#descargar_reporte")

    audit_log = pd.DataFrame([
        {"step": "open_browser", "status": "ok"},
        {"step": "navigate_login", "status": "ok"},
        {"step": "manual_or_test_login", "status": "pending_demo"},
        {"step": "download_report", "status": "pending_demo"}
    ])

    audit_log.to_csv("playwright_scraping_audit_log.csv", index=False)
    print(audit_log)

    browser.close()

Salida esperada en consola

Expected console output

                 step        status
0        open_browser            ok
1      navigate_login            ok
2  manual_or_test_login  pending_demo
3     download_report  pending_demo

Aplicaciones reales

Real-world applications

  • Automatizar reportes de portales internos autorizados.
  • Extraer tablas renderizadas con JavaScript.
  • Validar interfaces web de pruebas.
  • Documentar descargas repetitivas.
  • Automate authorized internal portal reports.
  • Extract JavaScript-rendered tables.
  • Validate test web interfaces.
  • Document repetitive downloads.

Recomendaciones

Recommendations

  • Nunca automatizar portales sin autorización formal.
  • No evadir controles de seguridad, MFA ni límites de acceso.
  • Usar cuentas de prueba y ambientes autorizados.
  • Guardar logs de navegación y errores.
  • Never automate portals without formal authorization.
  • Do not bypass security controls, MFA, or access limits.
  • Use test accounts and authorized environments.
  • Keep navigation and error logs.

Valor del tópico

Topic value

Playwright ayuda cuando la información no está en el HTML inicial y requiere interacción real, pero debe usarse siempre bajo autorización y control.

Playwright helps when information is not in the initial HTML and requires real interaction, but it must always be used under authorization and control.