首页 >后端开发 >Golang >Go Colly - 在 for 循环中访问 URL

Go Colly - 在 for 循环中访问 URL

王林
王林转载
2024-02-06 10:51:031032浏览

Go Colly - 在 for 循环中访问 URL

问题内容

我有一个例子,我应该访问多个链接并从中提取信息。问题是,当我使用“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 但这样做我会失去我的登录会话.. 有什么建议吗?


正确答案


您正在为每个循环迭代添加一个 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)
  }
}

以上是Go Colly - 在 for 循环中访问 URL的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除