知识点:
生成网页截图
本课内容:
本节,我们来用ChromeDP来对网页进行截图
先上代码
package mainimport ("context""io/ioutil""log""time""github.com/chromedp/cdproto/emulation""github.com/chromedp/chromedp")func main() {var buf []byte// create chrome instancectx, cancel := chromedp.NewContext(context.Background(),chromedp.WithDebugf(log.Printf),)defer cancel()// create a timeoutctx, cancel = context.WithTimeout(ctx, 50*time.Second)defer cancel()var err errorwidth, height := 1920, 1080err = 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/