0

我正在使用 gocolly 从我的网站收集数据,挑战在于,在抓取 URL 时,gocolly 过于激进。我添加了一个 RandomDelay

更新

根据我改变的答案

c.Limit(&colly.LimitRule{
        RandomDelay: 10 * time.Second,
})

c.Limit(&colly.LimitRule{
        RandomDelay: 10 * time.Second,
        Parallelism: 2,
        DomainGlob: "*mysite*",
})

但是当它爬行时,它会在几秒钟内完成:

原始输出

2021/02/04 08:17:33 Visiting https://www....
2021/02/04 08:17:33 Visiting https://www....
2021/02/04 08:17:34 Visiting https://www....
2021/02/04 08:17:34 Visiting https://www....
2021/02/04 08:17:34 Visiting https://www....
2021/02/04 08:17:34 Visiting https://www....

更新后的输出

2021/02/04 09:37:00 Visiting https://www...
2021/02/04 09:37:07 Visiting https://www...
2021/02/04 09:37:16 Visiting https://www...

我正在寻找的是一种确保gocolly 不会比例如5-10 秒公关页面更快地抓取这些页面的方法。原因是,我不想在每次 gocolly 运行时看到我的网站上的性能飙升。

添加 time.Sleep 可能是一种选择,但如果可能的话,我宁愿使用 gocolly Limit() 。

4

1 回答 1

1

您忘记设置DomainGlob 参数

    c.Limit(&colly.LimitRule{
        DomainGlob:  "*",
        //Parallelism: 2,
        //Delay:      5 * time.Second,
    })
于 2021-02-04T09:04:26.303 回答