El paquete chromedp
es una forma más rápida y sencilla de gestionar navegadores compatibles con el protocolo Chrome DevTools en Go sin dependencias externas.
Instale de la manera habitual en Go:
$ ve a buscar -u github.com/chromedp/chromedp
Consulte la referencia de Go para obtener documentación y ejemplos. Además, el repositorio de ejemplos contiene más ejemplos sobre acciones complejas y otras tareas comunes de alto nivel, como tomar capturas de pantalla de página completa.
No puedo ver ninguna ventana del navegador Chrome
De forma predeterminada, Chrome se ejecuta en modo sin cabeza. Consulte DefaultExecAllocatorOptions
y un ejemplo para anular las opciones predeterminadas.
Veo errores de "contexto cancelado"
Cuando se pierde la conexión con el navegador, chromedp
cancela el contexto y puede provocar este error. Esto ocurre, por ejemplo, si el navegador se cierra manualmente o si el proceso del navegador se ha cerrado o finalizado de otro modo.
Chrome se cierra tan pronto como finaliza mi programa Go
En Linux, chromedp
está configurado para evitar la pérdida de recursos al cerrar por la fuerza cualquier proceso secundario de Chrome iniciado. Si necesita iniciar una instancia de Chrome de larga duración, inicie Chrome manualmente y conéctese mediante RemoteAllocator
.
La ejecución de una acción sin
Run
da como resultado un "contexto no válido"
De forma predeterminada, un contexto chromedp
no tiene un ejecutor; sin embargo, se puede especificar uno manualmente si es necesario; consulte el número 326 para ver un ejemplo.
No puedo usar una
Action
conRun
porque devuelve muchos valores
Envuélvelo con una ActionFunc
:
ctx, cancelar := chromedp.NewContext(context.Background())diferir cancel()chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) error { _, err := domain.SomeAction().Do (ctx) devolver error}))
Quiero usar chromedp en un entorno sin cabeza
La forma más sencilla es ejecutar el programa Go que usa chromedp dentro de la imagen chromedp/headless-shell. Esa imagen contiene headless-shell
, una versión sin cabeza más pequeña de Chrome, que chromedp
puede encontrar de inmediato.
headless-shell
: una compilación de headless-shell
que se utiliza para probar chromedp
chromedp: una nueva forma de impulsar la Web - Charla GopherCon SG 2017
Protocolo Chrome DevTools: referencia del protocolo Chrome DevTools
ejemplos de chromedp - Ejemplos más complicados para chromedp
github.com/chromedp/cdproto
: referencia de Go para la API del protocolo Chrome DevTools generada
github.com/chromedp/pdlgen
: herramienta utilizada para generar cdproto
github.com/chromedp/chromedp-proxy
: un proxy CDP simple para registrar clientes y navegadores CDP