chromedp
ChromeDP is an open-source library for driving browsers using the Chrome DevTools Protocol (CDP) in the Go programming language. It is a high-level library that abstracts away the low-level details of interacting with the CDP and provides a simple, intuitive API for performing common browser automation tasks such as clicking elements, filling out forms, and taking screenshots.
ChromeDP also supports parallel execution of browser tasks, making it well-suited for large-scale web scraping and testing applications. It is considered as one of the most popular Go package for automation and scraping tasks.
Example Use
package main
import (
"context"
"fmt"
"github.com/chromedp/chromedp"
)
func main() {
var title, firstParagraph string
// create context
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()
// run task list (a scraping scenario)
err := chromedp.Run(ctx,
// go to page
chromedp.Navigate("https://www.example.com"),
// wait for element to load
chromedp.WaitVisible("body"),
// extract text from an element (css selector)
chromedp.Text("title", &title),
// extract first paragraph element
chromedp.First(chromedp.ByTagName("p"), &firstParagraph),
)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("Title: %s\n", title)
fmt.Printf("First paragraph: %s\n", firstParagraph)
}