首頁  >  文章  >  後端開發  >  Go Colly - 在 for 迴圈中存取 URL

Go Colly - 在 for 迴圈中存取 URL

王林
王林轉載
2024-02-06 10:51:03966瀏覽

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刪除