Files
fn_registry/functions/browser/cdp_get_frame_html.md
T
egutierrez 5b10b419a2 feat(browser): auto-commit con 44 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 12:49:54 +02:00

2.7 KiB

id, name, kind, lang, domain, purity, version, tested, description, tags, signature, uses_functions, uses_types, returns, returns_optional, error_type, imports, file_path, example, params, output
id name kind lang domain purity version tested description tags signature uses_functions uses_types returns returns_optional error_type imports file_path example params output
cdp_get_frame_html_go_browser cdp_get_frame_html function go browser impure 1.0.0 false Devuelve el HTML completo (document.documentElement.outerHTML) de un iframe concreto componiendo sobre CdpEvalInFrame con un mundo aislado CDP.
cdp
browser
iframe
html
scraping
navegator
func CdpGetFrameHTML(c *CDPConn, frameID string) (string, error)
cdp_eval_in_frame_go_browser
false error_go_core
functions/browser/cdp_get_frame_html.go conn, _ := CdpConnect("localhost", 9222, "") frames, _ := CdpListFrames(conn) html, err := CdpGetFrameHTML(conn, frames[1].ID) fmt.Println(html[:200]) // primeros 200 chars del HTML del iframe
name desc
c Conexión CDP activa obtenida con CdpConnect.
name desc
frameID ID del frame cuyo HTML se quiere obtener; obtenido de CdpListFrames (campo CdpFrame.ID).
String con el HTML completo del iframe (outerHTML del documentElement); error si la conexión es nula, el frameID está vacío o la evaluación CDP falla.

Ejemplo

conn, err := CdpConnect("localhost", 9222, "")
if err != nil {
    log.Fatal(err)
}
defer conn.Close()

// 1. Listar frames para obtener el ID del iframe deseado
frames, err := CdpListFrames(conn)
if err != nil {
    log.Fatal(err)
}

// frames[0] = frame raíz, frames[1] = primer iframe
for _, f := range frames {
    if f.ParentID != "" { // es un iframe, no el raíz
        html, err := CdpGetFrameHTML(conn, f.ID)
        if err != nil {
            log.Printf("error en frame %s: %v", f.ID, err)
            continue
        }
        fmt.Printf("=== iframe %s (%s) ===\n%s\n", f.ID, f.URL, html[:min(500, len(html))])
    }
}

Cuando usarla

Cuando necesites el HTML completo de un iframe para parsearlo, scrapearlo o inspeccionarlo. Flujo típico: CdpListFrames → elegir frame por URL → CdpGetFrameHTML → parsear con golang.org/x/net/html o regexp.

Gotchas

  • El mundo aislado ve el DOM pero NO las variables JS del page-world del iframe; suficiente para leer outerHTML y hacer scraping estructural.
  • frameID debe obtenerse de CdpListFrames; un ID obsoleto (frame recargado) provoca error en CdpEvalInFrame.
  • Para iframes con contenido dinámico (renderizado por JS), espera a que el iframe termine de cargar antes de llamar a esta función; de lo contrario el HTML puede estar incompleto.
  • En páginas con muchos iframes pesados, el outerHTML puede ser muy grande (MBs); considera evaluar selectores más específicos con CdpEvalInFrame si solo necesitas parte del DOM.