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