Colly 快速入门教程:开启网络爬虫之旅

2025-06-25 18:42 更新

在上一篇Colly 安装中,我们已经成功安装了 Colly,现在让我们一起进入 Colly 的奇妙世界,开启网络爬虫之旅。编程狮(W3Cschool.cn)将继续用通俗易懂的语言,结合实际案例,带你轻松玩转 Colly。

一、创建第一个爬虫:和网页打招呼

安装完 Colly 后,我们迫不及待地想让它开始工作。最简单的任务就是让 Colly 去访问一个网页,并把网页的标题抓取回来,这就像是让一个小朋友先学会和别人打招呼一样。

(一)编写代码

创建一个名为 hello_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/")
}

(二)代码解析

  • colly.NewCollector():这是创建一个收集器,就像是给 Colly 准备了一个小篮子,用来装它从网页上收集到的信息。
  • c.OnHTML("title", ...):这个函数的意思是,当 Colly 在网页上找到 <title> 标签时,就执行后面的操作。这里我们让它把标题打印出来。
  • c.Visit("https://www.w3cschool.cn/"):这个函数就是让 Colly 去访问指定的网页,就像给它一个网址,让它去敲别人的门。

二、运行爬虫:见证奇迹的时刻

在终端(Terminal)中,导航到包含 hello_crawler.go 文件的文件夹,然后运行以下命令:

go run hello_crawler.go

如果一切顺利,你会看到编程狮(W3Cschool.cn)网站的标题打印在终端上。这就意味着你的第一个 Colly 爬虫成功运行啦!

三、进阶操作:让爬虫更有礼貌

网络爬虫不仅仅是要能抓取数据,还要做到礼貌访问,不能给目标网站带来负担。这就像是去别人家做客,要遵守规矩一样。

(一)设置请求延迟

在爬取多个页面时,频繁的请求可能会对目标网站的服务器造成压力。为了避免这种情况,我们可以设置请求延迟,让 Colly 在发送请求之间等待一段时间。代码示例:

c.Limit(&colly.LimitRule{
    DomainGlob:  "*",    // 对所有域名生效
    Parallelism: 2,     // 同时发送 2 个请求
    Delay:      1 * time.Second, // 每个请求之间间隔 1 秒
})

(二)设置请求头

有时候,目标网站会检查请求头来判断是否是真实的浏览器访问。为了更好地模拟浏览器行为,我们可以设置请求头。代码示例:

c.SetRequestOptions(&colly.RequestOptions{
    Headers: map[string]string{
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
    },
})

这样设置后,目标网站就会认为是常见的浏览器在访问,而不是一个简单的爬虫程序。

四、爬取更多数据:挖掘宝库的宝藏

除了抓取网页标题,我们还可以用 Colly 抓取网页上的其他数据。比如抓取所有链接,这就像是在宝库里寻找更多的线索,通向更多的宝藏。

(二)代码解析

  • c.OnHTML("a", ...):这个函数的意思是,当 Colly 在网页上找到 <a> 标签(也就是超链接)时,就执行后面的操作。
  • e.Attr("href"):这个函数是用来获取 <a> 标签的 href 属性值,也就是链接的地址。

五、总结与展望

通过本篇文章,我们已经成功创建并运行了第一个 Colly 爬虫,还学习了如何让爬虫更有礼貌地访问网页,以及如何抓取网页上的更多数据。在编程狮(W3Cschool.cn)的后续教程中,我们会继续深入学习 Colly 的高级功能,比如处理 JavaScript 渲染的页面、存储抓取到的数据等等。希望你能持续关注,和我们一起在网络爬虫的世界里探索更多乐趣!

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

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号