我有一个例子,我应该访问多个链接并从中提取信息。问题是,当我使用“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)
}
}