Ⅰ. はじめに
タイトルの通り「Go で chromedp を利用して Chrome を自動操作する方法」です。
Ⅱ. やり方
1. ライブラリをインストールする
go get github.com/chromedp/chromedp
2. サンプルプログラムを書く
package main import ( "context" "log" "time" "github.com/chromedp/chromedp" ) func main() { allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), []chromedp.ExecAllocatorOption{ chromedp.NoFirstRun, chromedp.NoDefaultBrowserCheck, chromedp.DisableGPU, // chromedp.NoSandbox, // chromedp.Headless, chromedp.Flag("disable-infobars", true), }...) defer cancel() ctx, cancel := chromedp.NewContext(allocCtx, chromedp.WithLogf(log.Printf)) defer cancel() ctx, cancel = context.WithTimeout(ctx, 15*time.Second) defer cancel() var value string var attributes map[string]string err := chromedp.Run(ctx, chromedp.Navigate("https://example.org/"), chromedp.WaitVisible("/html/body/div/h1"), // innerHTML を取得する chromedp.InnerHTML("/html/body/div/h1", &value), // 属性を取得する chromedp.Attributes("/html/body/div/p[2]/a", &attributes), // chromedp.Value("xpath", &value), // chromedp.Click("xpath"), // chromedp.SendKeys("xpath", "hoge"), ) if err != nil { log.Fatal(err) } log.Printf("h1 innerHTML = %s", value) log.Printf("a href = %s", attributes["href"]) }
実行結果
h1 innerHTML = Example Domain a href = http://www.iana.org/domains/example