Colly 登录爬取:轻松搞定需要登录的网站
2025-07-11 17:46 更新
需要登录才能爬数据?用 Colly 的
Post
方法模拟登录,像逛自家网站一样轻松抓取!
一、示例:
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_username
和your_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 分钟实验
- 打开 Go 环境 → 新建
main.go
。 - 复制上方代码 → 替换为你的用户名和密码 → 运行。
- 观察终端:登录成功后,用户中心页面内容被打印出来。
关键词:Colly 登录爬取、模拟登录、Post 方法、编程狮
以上内容是否对您有帮助:
更多建议: