クロメップ:Goでウェブをサーフィンし始めてください

4093 ワード

chromedpあなたが反転するのに役立ちます!Web高速で、簡単に、プログラムのGolangで.あなたはSeleniumまたはPhantomJSまたは他の同様のツールで働いている場合は、この概念はあなたに精通している.
この記事では、chromedpで働き始め、いくつかの簡単な作業を行います.始めましょう.
まず最初に、プロジェクトの依存関係にchromedpを追加しなければなりません.これは、以前使用した他のgolangパッケージと同じようにできます.
go get -u github.com/chromedp/chromedp

chromedpを使用して作業を開始するには、たくさん行う必要はありません!あなたがする必要がある唯一のことは、contextを作成し、それを操作を開始します
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()
chromedp.Run(ctx, chromedp.Navigate("https://www.google.com"))

それです.私を信じて、chromedpはまだ何もまだ見ていない場合でもGoogleを開く!ブラウザが表示されなかった理由は、デフォルトではヘッドレスモードで実行されます.実際には、デフォルトでは
// DefaultExecAllocatorOptions are the ExecAllocator options used by NewContext
// if the given parent context doesn't have an allocator set up. Do not modify
// this global; instead, use NewExecAllocator. See ExampleExecAllocator.
var DefaultExecAllocatorOptions = [...]ExecAllocatorOption{
    NoFirstRun,
    NoDefaultBrowserCheck,
    Headless,

    // After Puppeteer's default behavior.
    Flag("disable-background-networking", true),
    Flag("enable-features", "NetworkService,NetworkServiceInProcess"),
    Flag("disable-background-timer-throttling", true),
    Flag("disable-backgrounding-occluded-windows", true),
    Flag("disable-breakpad", true),
    Flag("disable-client-side-phishing-detection", true),
    Flag("disable-default-apps", true),
    Flag("disable-dev-shm-usage", true),
    Flag("disable-extensions", true),
    Flag("disable-features", "site-per-process,TranslateUI,BlinkGenPropertyTrees"),
    Flag("disable-hang-monitor", true),
    Flag("disable-ipc-flooding-protection", true),
    Flag("disable-popup-blocking", true),
    Flag("disable-prompt-on-repost", true),
    Flag("disable-renderer-backgrounding", true),
    Flag("disable-sync", true),
    Flag("force-color-profile", "srgb"),
    Flag("metrics-recording-only", true),
    Flag("safebrowsing-disable-auto-update", true),
    Flag("enable-automation", true),
    Flag("password-store", "basic"),
    Flag("use-mock-keychain", true),
}

見ることができるように、配列の3番目の項目はヘッドレスです.新しいコンテキストを作成するためのコンフィグを作成しましょう.
opts := append(
  // select all the elements after the third element
    chromedp.DefaultExecAllocatorOptions[3:],
    chromedp.NoFirstRun,
    chromedp.NoDefaultBrowserCheck,
)

最新の手順はexecalLocatorを作成し、親コンテキストとして渡すことです.
parentCtx, _ := chromedp.NewExecAllocator(context.Background(), opts...)
ctx, _ := chromedp.NewContext(parentCtx)

プロジェクトを実行すると、ブラウザが開き、Google Webサイトに移動します.以下は完全なコードです.
package main

import (
    "context"
    "fmt"

    "github.com/chromedp/chromedp"
)

func main() {
    opts := append(
        // select all the elements after the third element
        chromedp.DefaultExecAllocatorOptions[3:],
        chromedp.NoFirstRun,
        chromedp.NoDefaultBrowserCheck,
    )
    // create chromedp's context
    parentCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
    defer cancel()

    ctx, cancel := chromedp.NewContext(parentCtx)
    defer cancel()

    if err := chromedp.Run(ctx, chromedp.Navigate("https://www.google.com")); err != nil {
        panic(err)
    }

    fmt.Println("I've just saw Google!!!")
}