package src import ( "log" "net/http" "time" "net" "fmt" "github.com/gocolly/colly" ) func Scrape (gurl string) []Route { ua := "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/110.0.0.0 Safari/537.36" sc := colly.NewCollector( colly.AllowURLRevisit(), colly.Async(true), ) sc.WithTransport(&http.Transport { Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, DualStack: true, }).DialContext, ForceAttemptHTTP2: true, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, }) sc.OnRequest(func(r *colly.Request) { r.Headers.Set("User-Agent", ua) r.Headers.Set( "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", ) r.Headers.Set("Accept-Language", "en-US,en;q=0.5") }) sc.OnError(func(_ *colly.Response, err error) { log.Fatal("エラー:", err) }) var routeArr []Route for i := 1; i <= 3; i++ { route := fmt.Sprintf("div#route%02d", i) sc.OnHTML("div.elmRouteDetail " + route, func (e *colly.HTMLElement) { Routes := getRouteDetail(e) routeArr = append(routeArr, Routes) }) } sc.Visit(gurl) sc.Wait() return routeArr }