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