Heim >Backend-Entwicklung >Golang >Go Colly – Greifen Sie in der for-Schleife auf die URL zu

Go Colly – Greifen Sie in der for-Schleife auf die URL zu

王林
王林nach vorne
2024-02-06 10:51:031018Durchsuche

Go Colly - 在 for 循环中访问 URL

Frageninhalt

Ich habe ein Beispiel, bei dem ich mehrere Links besuchen und daraus Informationen extrahieren sollte. Das Problem ist, dass meine Besuche zunehmen, wenn ich „colly.Visit(URL)“ verwende. Beispiel:

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)
    }
}

Dies wird gedruckt:

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

Ich habe versucht, colly nach jeder Iteration zu initialisieren, und das hat gut funktioniert – dann war die Reihenfolge: Zugriffskategorie http://cate1, Zugriffskategorie http://cate2, Zugriffskategorie http://cate3 Aber wenn ich das tue, verliere ich meine Anmeldesitzung. Irgendwelche Vorschläge?


Richtige Antwort


Sie fügen einen neuen OnRequest Handler für jede Schleifeniteration hinzu. Konfigurieren Sie den Handler außerhalb der Schleife:

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)
  }
}

Das obige ist der detaillierte Inhalt vonGo Colly – Greifen Sie in der for-Schleife auf die URL zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen