如何让 gocolly 爬行变慢

How to make gocolly crawl slower

我正在使用 gocolly 从我的网站收集数据,挑战在于,gocolly 在抓取 URL 时过于激进。我添加了一个 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()。

您忘记设置 DomainGlob parameter:

    c.Limit(&colly.LimitRule{
        DomainGlob:  "*",
        //Parallelism: 2,
        //Delay:      5 * time.Second,
    })