我有一个 case ,我应该访问多个链接,并从中提取信息.问题是,当我使用"coly.viite(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

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

推荐答案

您将 for each 循环迭代添加一个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)
  }
}

Go相关问答推荐

使用恶意软件 scanner (ClamAV)时的Google云存储桶上传文件验证

Go在使用HTTP代理时如何处理DNS请求?

验证访问令牌(密钥罩)

如何使用Gorilla WebSockets实现Http.Hijacker&;alexedwards/scs/v2

使用Go使用Gorm使用外键对数据进行排序

无法在32位计算机上运行Golang应用程序

为什么 Go 对于长度为 100k 的切片使用的内存比长度为 100k 的数组要少?

在 Go 中将元数据从一个 JPEG 复制到另一个

Go 中的 protobuf FieldMask 解组

Golang chromedp Dockerfile

如何将已知类型转换为指向switch 中类型参数的指针?

更改多对多连接表的名称

如何使用 go-git 将特定分支推送到远程

Gorm 预加载给出了模糊的列错误

如何使用带有方法的字符串枚举作为通用参数?

grpc-gateway:重定向与定义不匹配(原始文件)

如何在测试中使用自定义标志(使用`testify/suite`)

GoLang 遍历 yaml 文件

无法识别同步错误.使用一次

如何允许可转换为指针的泛型类型参数化另一种可转换为指针的泛型类型?