Go语言实现谷歌浏览器截屏效果:突破传统截屏技术的创新
admin2023-10-30【电脑应用】浏览:133
在这篇文章中,我们将研究如何利用Chrome的调试协议来加载网页并截图。通过一个名为的程序包chromedp,一切都可以实现,该程序包使我们可以通过Go代码控制Chrome实例。您还需要安装Chrome或使用类似于chrome/headless-shellDocker映像的工具。
我们将代码中的过程分为:
转自go语言中文文档:www.topgoer.com
- 启动Chrome
- 运行任务:例如加载网页并截图
- 将屏幕截图保存到文件
package mainimport ( "context" "io/ioutil" "log" "github.com/chromedp/cdproto/page" "github.com/chromedp/chromedp")func main() { // Start Chrome // Remove the 2nd param if you don't need debug information logged ctx, cancel := chromedp.NewContext(context.Background(), chromedp.WithDebugf(log.Printf)) defer cancel() url := "https://www.topgoer.com/" filename := "topgoer.png" // Run Tasks // List of actions to run in sequence (which also fills our image buffer) var imageBuf []byte if err := chromedp.Run(ctx, ScreenshotTasks(url, &imageBuf)); err != nil { log.Fatal(err) } // Write our image to file if err := ioutil.WriteFile(filename, imageBuf, 0644); err != nil { log.Fatal(err) }}func ScreenshotTasks(url string, imageBuf *[]byte) chromedp.Tasks { return chromedp.Tasks{ chromedp.Navigate(url), chromedp.ActionFunc(func(ctx context.Context) (err error) { *imageBuf, err = page.CaptureScreenshot().WithQuality(90).Do(ctx) return err }), }}
另外,如果您想将页面另存为pdf而不是图像,则可以将CaptureScreenshot行替换为以下内容:
*imageBuf, _, err = page.PrintToPDF().WithPrintBackground(false).Do(ctx)
相关文章
- wps表格平均分布各行该怎么实现 wps表格平均分布各行各列在哪
- 笔记本电脑品牌排名前十名推荐 电脑品牌笔记本排行榜前十名
- WIN10系统更新2004版本卡在49% win10 2004版本千万别更新
- 如何修改macOS的Time Machine备份计划
- 全国手机排名前十名 中国市场手机销量排名前十名
- Windows 10系统附件远程桌面连接:轻松掌握
- NVIDIA显卡高级功能隐藏与超频:游戏帧数提升策略
- win10禁用驱动程序强制签名教程 Win10禁用驱动程序强制签名
- 光猫亮红灯是什么原因 光猫亮红灯是什么意思?
- Excel表格怎么在日期后自动添加星期几 Excel表格日期后自动添加星期几方法
- 电脑分区合并与扩容:轻松掌握的合并分区教程
热评文章
企业微信分屏老师能看到吗 企业微信切屏老师能看见吗
excel如何批量输入求和公式 excel批量输入求
罗技驱动win7能用吗 罗技鼠标支持win7系统吗
打印机驱动卸载干净教程 打印机驱动怎样卸载干净
显卡驱动更新小技巧,让你的电脑运行更稳定
手机系统声音不起眼,但很重要 手机系统声音有的,但