Colly 是什么?

2025-06-25 18:59 更新

一、Colly 是什么:网络爬虫的得力助手

Colly 是一个基于 Golang 的网络爬虫框架,它可以帮助我们轻松地构建各种复杂程度的网络爬虫。无论是简单的数据抓取任务,还是处理数百万网页的大型爬虫项目,Colly 都能胜任。它提供了丰富的 API,方便我们发送网络请求、处理响应内容(例如与 HTML 文档的 DOM 树进行交互)。

二、简单爬虫示例:快速上手 Colly

为了让大家快速上手 Colly,这里提供一个简单的爬虫示例。我们将使用 Colly 抓取一个网页的标题,就像摘取网页上最显眼的 “果实” 一样。

创建一个名为 simple_crawler.go 的文件,然后写入以下代码:

package main


import (
    "fmt"
    "github.com/gocolly/colly"
)


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


    // 当访问页面时,输出页面标题
    c.OnHTML("title", func(e *colly.HTMLElement) {
        fmt.Println("网页标题:", e.Text)
    })


    // 访问页面
    c.Visit("https://www.w3cschool.cn/")
}

运行这段代码后,你会看到编程狮(W3Cschool.cn)网站的标题打印在终端上。这样,你就成功创建并运行了一个简单的 Colly 爬虫!

三、构建复杂爬虫:挖掘网络深处的宝藏

除了简单的爬虫,Colly 还可以构建处理数百万网页的复杂异步爬虫。以下是一个稍微复杂一点的爬虫示例,它会抓取一个网页上所有的链接,并继续访问这些链接,就像在迷宫中探索所有的通道。

创建一个名为 complex_crawler.go 的文件,然后写入以下代码:

package main


import (
    "fmt"
    "github.com/gocolly/colly"
)


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


    // 当访问页面时,输出页面标题
    c.OnHTML("title", func(e *colly.HTMLElement) {
        fmt.Println("网页标题:", e.Text)
    })


    // 当找到链接时,继续访问链接
    c.OnHTML("a[href]", func(e *colly.HTMLElement) {
        link := e.Attr("href")
        fmt.Println("发现链接:", link)
        e.Request.Visit(link)
    })


    // 限制最大深度,避免无限爬取
    c.MaxDepth = 2


    // 访问起始页面
    c.Visit("https://www.w3cschool.cn/")
}

这段代码会让爬虫从编程狮(W3Cschool.cn)网站的首页开始,抓取页面上的所有链接,并访问这些链接所指向的页面。MaxDepth 参数限制了爬虫的最大爬取深度,避免它陷入无限爬取的循环。

四、与 API 交互:让爬虫机器人更智能

Colly 还可以与各种 API 交互,获取更多数据或发送数据到其他系统。以下是一个与 API 交互的示例,它会向一个 API 发送请求,并处理返回的数据。

创建一个名为 api_crawler.go 的文件,然后写入以下代码:

package main


import (
    "fmt"
    "github.com/gocolly/colly"
)


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


    // 向 API 发送请求
    c.OnRequest(func(r *colly.Request) {
        fmt.Println("发送请求到:", r.URL)
    })


    // 处理 API 返回的数据
    c.OnResponse(func(r *colly.Response) {
        fmt.Println("收到响应:", string(r.Body))
    })


    // 访问 API
    c.Visit("https://api.example.com/data")
}

这段代码会向一个示例 API 发送请求,并打印出返回的数据。你可以将 API 的 URL 替换为你需要访问的实际 API 地址。

五、总结与展望:探索更多宝藏

通过本篇文章,我们学习了 Colly 的基本概念、简单爬虫示例、复杂爬虫构建以及与 API 交互等内容。Colly 的强大功能远不止这些,它还有许多其他功能等待我们去探索,比如处理 JavaScript 渲染的页面、存储抓取到的数据到数据库等等。

在编程狮(W3Cschool.cn)的后续教程中,我们会继续深入学习 Colly 的高级功能,帮助你构建更加强大、智能的网络爬虫。希望你能持续关注,和我们一起在网络爬虫的世界里探索更多宝藏!

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

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号