知识点:
生成网页截图
本课内容:
本节,我们来用ChromeDP来对网页进行截图
先上代码
package main
import (
"context"
"io/ioutil"
"log"
"time"
"github.com/chromedp/cdproto/emulation"
"github.com/chromedp/chromedp"
)
func main() {
var buf []byte
// create chrome instance
ctx, cancel := chromedp.NewContext(
context.Background(),
chromedp.WithDebugf(log.Printf),
)
defer cancel()
// create a timeout
ctx, cancel = context.WithTimeout(ctx, 50*time.Second)
defer cancel()
var err error
width, height := 1920, 1080
err = chromedp.Run(ctx, chromedp.Tasks{
emulation.SetDeviceMetricsOverride(int64(width), int64(height), 1.0, false),
})
loginUrl := `https://news.sina.com.cn`
err = chromedp.Run(ctx, chromedp.Tasks{
chromedp.Navigate(loginUrl),
chromedp.Sleep(5 * time.Second),
//chromedp.Click(`#login_btn`, chromedp.ByID),
//chromedp.Sleep(5 * time.Second),
chromedp.CaptureScreenshot(&buf),
})
if err != nil {
log.Fatal(err)
}
if err := ioutil.WriteFile("1.png", buf, 0644); err != nil {
log.Fatal(err)
}
}
ChromeDP是一个功能过于强大的库,
他可以自动的实现Chrome浏览器的几乎所有功能
生成网页截图只是其一小部分功能
扩展阅读:
Chromedp是什么
chromedp是一个更快、更简单的Golang库用于调用支持Chrome DevTools协议的浏览器,同时不需要额外的依赖(例如Selenium和PhantomJS)
Chrome和Golang都与Google有着相当密切的关系,而Chrome DevTools其实就是Chrome浏览器按下F12之后的控制终端
为什么不使用Selenium
对于Golang开发来说,使用chromedp更为便捷,因为它仅仅需要Chrome浏览器而并不需要依赖ChromeDriver,省去了依赖问题,有助于自动化的构建和多平台架构的迁移
安装chromedp
下载并安装Chrome浏览器
创建Golang项目,开启Go Module(在项目目录下使用终端输入go mod init)
在项目目录下使用终端输入:go get -u github.com/chromedp/chromedp
完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com/
免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。