Go Colly - 在 for 循环中访问 URL

问题描述 投票:0回答:1

我有一个情况,我应该访问多个链接并从中提取信息。问题是,当我使用“colly.Visit(URL)”时,我的访问量会增加。 示例:

package main

import (
    "fmt"

    "github.com/gocolly/colly"
)

func main() {

    CATETORIES := []string{
        "cate1",
        "cate2",
        "cate3",
    }

    c := colly.NewCollector()

    for _, cate := range CATETORIES {

        c.OnRequest(func(r *colly.Request) {
            fmt.Println("Visiting categories", r.URL)
        })

        c.Visit(cate)
    }
}

将打印:

Visiting categories http://cate1  
Visiting categories http://cate2
Visiting categories http://cate2
Visiting categories http://cate3
Visiting categories http://cate3
Visiting categories http://cate3

我尝试在每次迭代后初始化 colly,效果很好 - 然后顺序是:访问类别 http://cate1,访问类别 http://cate2,访问类别 http://cate3 但这样做我会失去我的登录会话.. 有什么建议吗?

go web-crawler scrape go-colly
1个回答
0
投票

您正在为每个循环迭代添加一个 new

OnRequest
处理程序。在循环外配置处理程序:

func main() {

  CATETORIES := []string{
    "cate1",
    "cate2",
    "cate3",
  }

  c := colly.NewCollector()

  c.OnRequest(func(r *colly.Request) {
    fmt.Println("Visiting categories", r.URL)
  })

  for _, cate := range CATETORIES {
    c.Visit(cate)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.