5b10b419a2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.7 KiB
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. |
|
func CdpGetFrameHTML(c *CDPConn, frameID string) (string, error) |
|
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 |
|
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
outerHTMLy hacer scraping estructural. frameIDdebe obtenerse deCdpListFrames; un ID obsoleto (frame recargado) provoca error enCdpEvalInFrame.- 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
CdpEvalInFramesi solo necesitas parte del DOM.