Go Chromedp库得使用----CDP(Chrome DevTools Protocol)

本文介绍了如何使用Go语言中的Chromedp库来操作Chrome DevTools Protocol(CDP)。内容包括CDP的基本概念、相关语言操作如Pyppeteer和Puppeteer,以及Chromedp库的具体使用,如初始化上下文、导航、等待元素可见、点击、获取值等。此外,还展示了本地和远程(无头浏览器)操作的示例,包括Centos上安装Chromium-headless的步骤和相关参数配置。
摘要由CSDN通过智能技术生成

Go chromedp库的使用 —CDP

CDP(Chrome DevTools Protocol)

Chrome DevTools Protocol 是基于websocket的一种协议,可以运行其他工具或者库来通过CDP协议进行检查、调试Chrome和其他基于Blink的浏览器。

基于CDP协议的相关语言操作

  • Pyppeteer,它是谷歌chrome官方无头框架puppeteer的python版本 https://miyakogi.github.io/pyppeteer/reference.html
  • Puppeeer,它是一个Node库,可以使用Node.js来实现控制Chrome或Chromiumhttp://www.puppeteerjs.com/
  • Chromedp, 是由Go语言编写,支持Chrome DevTools Protocol的一个库,不需要依赖其他的外界服务(如Selenium和PhantomJS) https://github.com/chromedp/chromedp

Chromedp使用

  • chromedp.NewContext() 初始化chromedp的上下文,后续这个页面都使用这个上下文进行操作
  • chromedp.Run() 运行一个chrome的一系列操作
  • chromedp.Navigate() 将浏览器导航到某个页面
  • chromedp.WaitVisible() 等候某个元素可见,再继续执行。
  • chromedp.Click() 模拟鼠标点击某个元素
  • chromedp.Value() 获取某个元素的value值
  • chromedp.ActionFunc() 再当前页面执行某些自定义函数
  • chromedp.Text() 读取某个元素的text值
  • chromedp.Evaluate() 执行某个js,相当于控制台输入js
  • network.SetExtraHTTPHeaders() 截取请求,额外增加header头
  • chromedp.SendKeys() 模拟键盘操作,输入字符
  • chromedp.Nodes() 根据xpath获取某些元素,并存储进入数组
  • chromedp.NewRemoteAllocator
  • chromedp.OuterHTML() 获取元素的outer html
  • chromedp.Screenshot() 根据某个元素截图
  • page.CaptureScreenshot() 截取整个页面的元素
  • chromedp.Submit() 提交某个表单
  • chromedp.WaitNotPresent() 等候某个元素不存在,比如“正在搜索。。。”
  • chromedp.Tasks{} 一系列Action组成的任务

示例

本地界面浏览器操作

默认情况下chromedp使用的浏览器为headless-chrome

func main() {
   
    //禁用headless-chrome 无头浏览器  推荐debug模式下使用
	opts := append(chromedp.DefaultExecAllocatorOptions[:], chromedp.Flag("headless", false))
	alloctx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
	defer cancel()

	ctx, cancel := chromedp.NewContext(alloctx, chromedp.WithErrorf(log.Printf))
	defer cancel()
	var nodes []*cdp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路小白&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值