Le package chromedp
est un moyen plus rapide et plus simple de piloter des navigateurs prenant en charge le protocole Chrome DevTools dans Go sans dépendances externes.
Installez de la manière Go habituelle :
$ allez chercher -u github.com/chromedp/chromedp
Reportez-vous à la référence Go pour la documentation et les exemples. De plus, le référentiel d'exemples contient davantage d'exemples d'actions complexes et d'autres tâches courantes de haut niveau, telles que la prise de captures d'écran d'une page entière.
Je ne vois aucune fenêtre du navigateur Chrome
Par défaut, Chrome s'exécute en mode sans tête. Voir DefaultExecAllocatorOptions
et un exemple pour remplacer les options par défaut.
Je vois des erreurs "contexte annulé"
Lorsque la connexion au navigateur est perdue, chromedp
annule le contexte, ce qui peut entraîner cette erreur. Cela se produit, par exemple, si le navigateur est fermé manuellement ou si le processus du navigateur a été arrêté ou terminé d'une autre manière.
Chrome se ferme dès que mon programme Go est terminé
Sous Linux, chromedp
est configuré pour éviter les fuites de ressources en supprimant de force tout processus enfant Chrome démarré. Si vous devez lancer une instance Chrome de longue durée, démarrez manuellement Chrome et connectez-vous à l'aide de RemoteAllocator
.
L'exécution d'une action sans
Run
entraîne un "contexte invalide"
Par défaut, un contexte chromedp
n'a pas d'exécuteur, cependant il peut en être spécifié un manuellement si nécessaire ; voir le numéro 326 pour un exemple.
Je ne peux pas utiliser une
Action
avecRun
car elle renvoie de nombreuses valeurs
Enveloppez-le avec un ActionFunc
:
ctx, annuler := chromedp.NewContext(context.Background())defer Cancel()chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) error { _, err := domain.SomeAction().Do (ctx) renvoie erreur}))
Je souhaite utiliser chromedp sur un environnement sans tête
Le moyen le plus simple consiste à exécuter le programme Go qui utilise chromedp dans l'image chromedp/headless-shell. Cette image contient headless-shell
, une version sans tête plus petite de Chrome, que chromedp
est capable de trouver immédiatement.
headless-shell
- Une version de headless-shell
utilisée pour tester chromedp
chromedp : une nouvelle façon de piloter le Web - Conférence GopherCon SG 2017
Protocole Chrome DevTools - Référence du protocole Chrome DevTools
chromedp examples - Exemples plus compliqués pour chromedp
github.com/chromedp/cdproto
- Go référence pour l'API du protocole Chrome DevTools générée
github.com/chromedp/pdlgen
- outil utilisé pour générer cdproto
github.com/chromedp/chromedp-proxy
- un simple proxy CDP pour la journalisation des clients et des navigateurs CDP