Heim >Backend-Entwicklung >Golang >Go Colly – Greifen Sie in der for-Schleife auf die URL zu
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?
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!