Go语言 如何忽略打印达到最大深度限制

kokeuurv  于 2023-06-03  发布在  Go
关注(0)|答案(1)|浏览(146)

我有一个去科利爬虫,我试图抓取许多网站。在我的终端上,它会打印很多:

2023/05/30 02:22:56 Max depth limit reached
2023/05/30 02:22:56 Max depth limit reached
2023/05/30 02:22:56 Max depth limit reached
2023/05/30 02:22:56 Max depth limit reached
2023/05/30 02:22:56 Max depth limit reached
2023/05/30 02:22:56 Max depth limit reached
2023/05/30 02:22:56 Max depth limit reached

这让我很难读懂我放的一些指纹。我想知道有没有办法在termial忽略打印这个。谢谢

ghhkc1vu

ghhkc1vu1#

Max depth limit reached是colly.ErrMaxDepth。你的项目中一定有这样的代码:

c := colly.NewCollector(colly.MaxDepth(5))

// ...

if err := c.Visit("http://go-colly.org/"); err != nil {
    log.Println(err)
}

如果您不想记录此错误,请添加一个简单的检查来排除它:

c := colly.NewCollector(colly.MaxDepth(5))

// ...

if err := c.Visit("http://go-colly.org/"); err != nil {
    // log the error only when the error is not ErrMaxDepth.
    if err != colly.ErrMaxDepth {
        log.Println(err)
    }
}

另一种选择是将输出重定向到文件:

go run . 2>&1 >log.txt

或者将输出复制到一个文件中,并使用tee复制到标准输出:

go run . 2>&1 | tee log.txt

相关问题