Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go自动化

Golang结合chromedp实现浏览器自动化操作

作者:程序员爱钓鱼

当大家提到浏览器自动化,第一反应往往是 Python + Selenium, 但其实 Go 语言也能做浏览器自动化,下面我们就来看看Golang如何结合chromedp实现自动化操作网页吧

当大家提到“浏览器自动化”,第一反应往往是 Python + Selenium。 但其实 Go 语言也能做浏览器自动化,而且更快、更稳定、更轻量!

这篇文章我们就来聊聊: 如何用 Go + chromedp 实现和 Python Selenium 一样的网页操作自动化。

为什么要用 Go 做浏览器自动化?

如果你做过 Python 自动化,你可能遇到:

而 chromedp 解决了这些痛点:

chromedp 是什么

chromedp 是 Go 官方团队成员维护的一个库,用来通过 CDP 协议控制 Chrome。

它可以:

几乎你用 Selenium 能做的,它都能做,而且更快。

最简单示例:打开网页并获得标题

下面是一个完整可运行的 chromedp 代码,演示:

package main

import (
	"context"
	"log"
	"time"

	"github.com/chromedp/chromedp"
)

func main() {
	ctx, cancel := chromedp.NewContext(context.Background())
	defer cancel()

	var res string

	err := chromedp.Run(ctx,
		chromedp.Navigate("https://www.google.com"),
		chromedp.Sleep(2*time.Second),
		chromedp.Evaluate(`document.title`, &res),
	)

	if err != nil {
		log.Fatal(err)
	}

	log.Println("页面标题:", res)
}

运行后终端会输出:

页面标题: Google

一个非常简单的示例,却展示了 chromedp 自动化的威力。

chromedp 能做什么

这里列一部分最常见的自动化任务。

自动点击网页按钮

chromedp.Click(`#login-button`)

自动输入内容

chromedp.SendKeys(`#username`, "admin")

等待元素加载

chromedp.WaitVisible(`#content`)

执行 JavaScript

chromedp.Evaluate(`document.querySelector("#num").innerText`, &value)

截图网页

var buf []byte
chromedp.Screenshot(`body`, &buf)

批量爬取网页数据

完全可以替代 Python 的 requests + BeautifulSoup + Selenium。

chromedp 与 Selenium 的对比

特性Seleniumchromedp
驱动依赖需要 ChromeDriver不需要
速度较慢非常快
稳定性偶有卡死稳定
运行环境不适合 Docker非常适合
控制协议WebDriverChrome DevTools
学习难度中等

如果你需要大规模自动化任务,比如:

chromedp 是比 Selenium 更适合长期跑的方案。

更多 chromedp 实战(我可以帮你写)

如果你需要实际业务自动化,我可以帮你写:

告诉我你的需求,我来给你写完整可运行的 Go 自动化脚本。

总结

Go + chromedp 是一个非常强大的浏览器自动化组合,它:

如果你正在使用 Python Selenium,不妨试一试 chromedp,它会让自动化变得更快、更简单。

到此这篇关于Golang结合chromedp实现浏览器自动化操作的文章就介绍到这了,更多相关Go自动化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文