Colly 登录爬取:轻松搞定需要登录的网站

2025-07-11 17:46 更新

需要登录才能爬数据?用 CollyPost 方法模拟登录,像逛自家网站一样轻松抓取!

一、示例:

package main


import (
    "log"


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


func main() {
    // 创建一个收集器
    c := colly.NewCollector()


    // 模拟登录(替换为实际登录 URL 和参数)
    err := c.Post("https://www.w3cschool.cn/login", map[string]string{
        "username": "your_username", // 替换为你的用户名
        "password": "your_password", // 替换为你的密码
    })
    if err != nil {
        log.Fatal("登录失败:", err)
    }


    // 登录成功后,添加回调函数
    c.OnResponse(func(r *colly.Response) {
        log.Println("收到响应,状态码:", r.StatusCode)
    })


    // 开始爬取(访问需要登录才能看到的页面)
    c.Visit("https://www.w3cschool.cn/dashboard")
}

注意:请将 your_usernameyour_password 替换为实际的用户名和密码。

二、登录爬取的 3 个关键点

关键点 说明 示例代码
登录 URL 找到登录表单提交的 URL https://www.w3cschool.cn/login
登录参数 提交的用户名、密码等字段 map[string]string{"username": "your_username", "password": "your_password"}
登录后验证 确保登录成功再爬取 检查响应状态码或页面内容

三、完整实战:爬取编程狮用户中心

假设你想爬取编程狮用户中心的页面,完整代码如下:

package main


import (
    "log"


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


func main() {
    // 创建一个收集器
    c := colly.NewCollector()


    // 模拟登录
    err := c.Post("https://www.w3cschool.cn/login", map[string]string{
        "username": "your_username", // 替换为你的用户名
        "password": "your_password", // 替换为你的密码
    })
    if err != nil {
        log.Fatal("登录失败:", err)
    }


    // 登录成功后,添加回调函数
    c.OnResponse(func(r *colly.Response) {
        log.Println("收到响应,状态码:", r.StatusCode)
    })


    // 爬取用户中心页面
    c.OnHTML("body", func(e *colly.HTMLElement) {
        log.Println("用户中心页面内容:", e.Text)
    })


    // 开始爬取
    c.Visit("https://www.w3cschool.cn/dashboard")
}

四、常见问题速查

现象 原因 解决方法
登录失败 用户名/密码错误 检查登录参数是否正确
无法访问目标页面 登录后未正确跳转 检查登录后是否需要跳转到其他页面
页面内容为空 页面是动态加载的 使用 Colly 的 OnHTML 或其他方法解析动态内容

五、1 分钟实验

  1. 打开 Go 环境 → 新建 main.go
  2. 复制上方代码 → 替换为你的用户名和密码 → 运行。
  3. 观察终端:登录成功后,用户中心页面内容被打印出来。

关键词:Colly 登录爬取、模拟登录、Post 方法、编程狮

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

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号