Colly 爬取深度限制:精准控制爬虫范围

2025-07-11 17:47 更新

爬虫任务太大怕失控?用 CollyMaxDepth 限制爬取深度,就像给爬虫装上“紧箍咒”,轻松精准控制范围。

一、示例:

package main


import (
    "fmt"


    "github.com/gocolly/colly/v2"
)


func main() {
    // 创建默认收集器,限制最大深度为 2
    c := colly.NewCollector(
        colly.MaxDepth(2), // 只爬取首页 + 一层链接
    )


    // 每次发现 <a href="..."> 标签就打印并继续访问
    c.OnHTML("a[href]", func(e *colly.HTMLElement) {
        link := e.Attr("href")
        fmt.Println("发现链接:", link)


        // 自动补全绝对路径后再访问
        absoluteURL := e.Request.AbsoluteURL(link)
        e.Request.Visit(absoluteURL)
    })


    // 从编程狮首页开始
    c.Visit("https://www.w3cschool.cn/")
}

运行结果(只爬取两层):

发现链接: https://www.w3cschool.cn/go
发现链接: https://www.w3cschool.cn/python
...

二、深度限制的 3 个关键点

关键点 说明 示例代码
设置深度 通过 colly.MaxDepth(n) 设置最大爬取深度 colly.MaxDepth(2)
深度含义 0 表示只爬首页,1 表示爬首页 + 一层链接,依此类推 colly.MaxDepth(0) 只爬首页
动态调整 可以在运行时动态调整深度 c.MaxDepth = 3

三、完整实战:爬取编程狮首页及两层链接

假设你想爬取编程狮首页及其两层链接,完整代码如下:

package main


import (
    "fmt"


    "github.com/gocolly/colly/v2"
)


func main() {
    // 创建默认收集器,限制最大深度为 2
    c := colly.NewCollector(
        colly.MaxDepth(2), // 只爬取首页 + 一层链接
    )


    // 每次发现 <a href="..."> 标签就打印并继续访问
    c.OnHTML("a[href]", func(e *colly.HTMLElement) {
        link := e.Attr("href")
        fmt.Println("发现链接:", link)


        // 自动补全绝对路径后再访问
        absoluteURL := e.Request.AbsoluteURL(link)
        e.Request.Visit(absoluteURL)
    })


    // 从编程狮首页开始
    c.Visit("https://www.w3cschool.cn/")
}

四、常见问题速查

现象 原因 解决方法
爬取深度不够 MaxDepth 设置太小 增大 MaxDepth 值
爬取深度太深 MaxDepth 设置太大 减小 MaxDepth 值
无法访问某些链接 链接不在 AllowedDomains 中 检查 AllowedDomains 是否包含目标域名

五、1 分钟实验

  1. 打开 Go 环境 → 新建 main.go
  2. 复制上方代码 → 运行。
  3. 观察终端:只爬取两层链接,不会无限深入。

标题:Colly 爬取深度限制:精准控制爬虫范围(小白适配版)| 编程狮教程
描述
关键词:Colly 爬取深度、MaxDepth、爬虫范围控制、编程狮

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号