如何让 gocolly 爬得更慢

问题描述

我正在使用 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,})