Web前端开发网

fly63.com

首页 资源 工具 文章 教程 栏目
  • 在线搜索
  • 文章标签
  • 广告合作
  • 赞助一下
  • 关于我们
资源推荐
Trae
字节跳动推出的 AI原生编程工具
扣子Coze
职场AI,就用扣子
硅云优惠券
领先的基础云计算服务提供商,PHP云虚拟主机第一品牌
AI提示词商城
AI提示词交易与管理平台,提升效率
我要自学网
免费视频教程,提供全方位软件学习
SpeedAI
一键去重、降AIGC率、数据可视化、论文写作
阿里云优惠券
卓越的云计算技术和服务提供商
LiblibAI
一站式AI内容创作生成平台,原创AI模型分享社区
fly63工具箱
简单、易用、便捷的在线工具
堆友AI
零门槛,多风格AI绘画免费生成,电商海报设计神器

资源分类

AI智能 酷站推荐 招聘/兼职 框架/库 模块/管理 移动端UI框架 Web-UI框架 Js插件 Jquery插件 CSS相关 IDE环境 在线工具 图形动效 游戏框架 node相关 调试/测试 在线学习 社区/论坛 博客/团队 前端素材 图标/图库 建站资源 设计/灵感 IT资讯
网站收录 / 问题反馈

chromedp

分享
复制链接
新浪微博
QQ 好友

扫一扫分享

GitHub:https://github.com/chromedp/chromedp
网站描述:高效采集数据,网络爬虫工具
GitHub

chromedp一个基于Chrome DevTools协议的Go语言库。该库提供了一种简单、高效、可靠的方式来控制Chrome浏览器进行自动化测试和爬取数据。

它可以模拟用户在浏览器中执行各种操作,如点击、输入文本、截取网页长图、将网页内容转换成pdf文档、下载图片等,从而获取到需要采集的数据。


chromedp 安装

安装 chromedp 可以通过 go get 命令来完成:

go get -u /chromedp/chromedp


基础用法

chromedp的基本用法非常简单,只需要定义一个任务列表,然后将其传递给chromedp.Run函数即可。下面是一个简单的例子。 这个例子的功能如下:

  • chromedp.Navigate: 打开https://pkg.go.dev/time网页
  • chromedp.WaitVisible:等待网页加载完成
  • chromedp.Click:点击#example-After标签。也就是网页中的After函数示例
  • chromedp.Value:将示例代码的值读取到example变量中。
  • 最后输出example变量

如下:

package main

import (
 "context"
 "log"
 "time"
    "github.com/chromedp/chromedp"
)

func main() {
 // create chrome instance
 ctx, cancel := chromedp.NewContext(
  context.Background(),
  // chromedp.WithDebugf(log.Printf),
 )
 defer cancel()

 // create a timeout
 ctx, cancel = context.WithTimeout(ctx, 15*time.Second)
 defer cancel()

 // navigate to a page, wait for an element, click
 var example string
 err := chromedp.Run(ctx,
  chromedp.Navigate(`https://pkg.go.dev/time`),
  // wait for footer element is visible (ie, page is loaded)
  chromedp.WaitVisible(`body > footer`),
  // find and click "Example" link
  chromedp.Click(`#example-After`, chromedp.NodeVisible),
  // retrieve the text of the textarea
  chromedp.Value(`#example-After textarea`, &example),
 )
 if err != nil {
  log.Fatal(err)
 }
 log.Printf("Go's time.After example:\n%s", example)
}


截屏

将网页截取成图片有两个函数:chromedp.Screenshot和chromedp.FullScreenshot。 其中chromedp.Screenshot是按网页中的某个div的元素截取。而chromedp.FullScreenshot是截取整个网页。我们看下下面的例子:

package main

import (
 "context"
 "log"
 "os"

 "github.com/chromedp/chromedp"
)

func main() {
 // create context
 ctx, cancel := chromedp.NewContext(
  context.Background(),
  // chromedp.WithDebugf(log.Printf),
 )
 defer cancel()

 // capture screenshot of an element
 var buf []byte
 if err := chromedp.Run(ctx, elementScreenshot(`https://pkg.go.dev/`, `img.Homepage-logo`, &buf)); err != nil {
  log.Fatal(err)
 }
 if err := os.WriteFile("elementScreenshot.png", buf, 0o644); err != nil {
  log.Fatal(err)
 }

 // capture entire browser viewport, returning png with quality=90
 if err := chromedp.Run(ctx, fullScreenshot(`https://brank.as/`, 90, &buf)); err != nil {
  log.Fatal(err)
 }
 if err := os.WriteFile("fullScreenshot.png", buf, 0o644); err != nil {
  log.Fatal(err)
 }

 log.Printf("wrote elementScreenshot.png and fullScreenshot.png")
}

// elementScreenshot takes a screenshot of a specific element.
func elementScreenshot(urlstr, sel string, res *[]byte) chromedp.Tasks {
 return chromedp.Tasks{
  chromedp.Navigate(urlstr),
  chromedp.Screenshot(sel, res, chromedp.NodeVisible),
 }
}

// fullScreenshot takes a screenshot of the entire browser viewport.
//
// Note: chromedp.FullScreenshot overrides the device's emulation settings. Use
// device.Reset to reset the emulation and viewport settings.
func fullScreenshot(urlstr string, quality int, res *[]byte) chromedp.Tasks {
 return chromedp.Tasks{
  chromedp.Navigate(urlstr),
  chromedp.FullScreenshot(res, quality),
 }
}

该示例就是通过elementScreenshot函数中截取了https://pkg.go.dev/中的img.Homepage-logo标签的图片。另外一个就是通过fullScreenshot函数来截取了https://brank.as/网站的长图。


仅供个人学习参考/导航指引使用,具体请以第三方网站说明为准,本站不提供任何专业建议。如果地址失效或描述有误,请联系站长反馈~感谢您的理解与支持!

链接: https://fly63.com/nav/4149

更多»
热门资源
fly63工具箱
简单、易用、便捷的在线工具
官网
GitHub
remove.bg
消除图片背景:100% 自动 – 只需 5 秒
官网
阿里云DataV
地图数据
官网
retoucher
在线AI智能抠图去背景工具
官网
飞书多维表格
飞书旗下的一款在线协作与业务管理工具
官网
Apifox
API 文档、API 调试、API Mock、API 自动化测试一体化协作平台
官网
易文档
需求文档、API文档、部署文档到使用手册
官网
mdx-deck
基于MDX的演示文稿
官网
GitHub
YouCompress
在线免费文件压缩工具
官网
iHateRegex
快速搜索并匹配到合适的正则表达式
官网
GitHub
Trilium Notes
层级结构的笔记程序,专注构建个人的大型知识库
点击进入
GitHub
CodeZen
在线源代码转图片工具
官网
类似于chromedp的资源
PostHog
一体化、开源的产品分析平台,助开发者构建更优秀的产品
官网
GitHub
ClickUp
浏览网页随手笔记工具
官网
Wizard
开源文档管理系统
官网
GitHub
Firecrawl
一款开源的网页爬虫和内容清洗引擎
官网
GitHub
Coolors
配色方案生成与分享
官网
快切助手
超好用的网页制作&专题制作助手
官网
迅捷PDF转换器
文档、音视频转换处理,文字、语音识别
官网
img.top
智能在线图片压缩
官网
目录

手机扫一扫预览

》
分享组件加载中...
首页 技术导航 在线工具 技术文章 教程资源 前端标签 AI工具集 前端库/框架 实用工具箱 广告合作 关于我们

Copyright © 2018 Web前端开发网提供免费在线工具、编程学习资源(教程/框架/库),内容以学习参考为主,助您解决各类实际问题,快速提升专业能力。