【Go|第8期】Lorca读取HTML的三种方式

news2024/11/15 17:43:10

日期:2023年7月16日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢 ^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


在这里插入图片描述


文章目录

  • 一、精彩回顾
  • 二、前言
  • 三、读取HTML的三种方式
    • (1)DataURI协议读取HTML
    • (2)file协议读取HTML
    • (3)http协议读取HTML


一、精彩回顾

《【Go|第5期】Lorca无法正常运行的解决方案》
《【Go|第6期】浅谈Lorca页面中Chrome正受到自动测试软件的控制》
《【Go|第7期】浅谈Lorca库中的Chromium命令行参数》

二、前言

Lorca 是一个用于构建跨平台桌面应用程序的 Go 语言库,它提供了将 Web 界面嵌入到 Go 应用程序中的功能。接下来我们来了解下使用 Lorca 库读取 HTML 的三种方式吧 ^ - ^

三、读取HTML的三种方式

(1)DataURI协议读取HTML

Data URL(数据URL)是一种URI方案,允许将数据直接嵌入到网页或文档中,而不是链接到外部文件。它允许将小量数据作为URL的一部分进行包含。

  • 语法:
data://<media type>/<data>
data://<media type><data>
data 协议方案(Scheme媒体类型或内容类型(Media Type or Content Type),它用于表示嵌入在 URI 中的数据的格式和性质。指实际嵌入在URI中的数据内容部分。数据可以是任何格式,例如文本、图像、音频、视频或二进制数据。数据内容通常使用Base64编码或URL编码进行表示。

一些常见的协议方案

协议方案说明
http超文本传输协议,用于访问和传输 Web 页面和其他资源。
https安全的超文本传输协议,使用加密通信进行安全的 Web 访问。
ftp文件传输协议,用于在网络上进行文件传输。
file本地文件协议,用于访问计算机本地文件系统中的文件。
mailto电子邮件协议,用于发送电子邮件。
data数据协议,用于在URI中直接嵌入数据。
tel电话号码协议,用于指定电话号码进行拨号。

一些常见的媒体类型或内容类型

媒体类型或内容类型说明
text/plain表示纯文本数据。
text/html表示 HTML 文档。
image/jpeg表示 JPEG 图像。
image/png表示 PNG 图像。
application/pdf表示 PDF 文档。
application/json表示 JSON 数据。
audio/mp3表示 MP3 音频。
video/mp4表示 MP4 视频。
  • 示例:

在这里插入图片描述
运行 go run .,页面显示如上所示

  • 代码:
package main

import (
	"net/url"

	"github.com/zserge/lorca"
)

func main() {
	// (1)创建一个新的窗口,宽480 x 高320
	ui, _ := lorca.New("", "", 480, 320, "--remote-allow-origins=*")
	defer ui.Close()

	// (2)在Lorca中加载dataURI资源
	// (2-1)HTML内容
	html := `
		<!DOCTYPE html>
		<html>
		<head>
			<title>Embedded HTML</title>
		</head>
		<body>
			<h1>Hello, Lorca!</h1>
			<h1>Embedded HTML</h1>
		</body>
		</html>
	`

	// (2-2)创建一个HTML内容的data URL
	dataURI := "data:text/html," + url.PathEscape(html)

	// (2-3)在Lorca中加载dataURI
	ui.Load(dataURI)

	// (3)运行窗口直关闭
	<-ui.Done()
}

(2)file协议读取HTML

文件协议(File Protocol)是一种用于访问本地文件系统资源的URIUniform Resource Identifier)协议。它允许通过指定文件路径来访问本地计算机上的文件。

  • 语法:
file://<host>/<path>
file//<host><path>
file 协议可选部分,通常为空,表示本地主机。必需部分,表示文件在文件系统中的路径。

因为 <host> 通常为空,所以常见写法为 file///<path>,示例 file///D:/loadhtml/index.html

  • 示例:

在这里插入图片描述

  • 代码:
package main

import "github.com/zserge/lorca"

func main() {
	// (1)创建一个新的窗口,宽480 x 高320
	ui, _ := lorca.New("", "", 480, 320, "--remote-allow-origins=*")
	defer ui.Close()

	// (2)在Lorca中加载本地文件(file协议 file://<host>/<path>)
	// NO1: file:/// + path("/")
	ui.Load("file:///D:/loadhtml/02FileLoadHtml/index.html")
	// NO2: file:/// + path("\\")
	//ui.Load("file:///D:\\loadhtml\\02FileLoadHtml\\index.html")

	// (3)运行窗口直关闭
	<-ui.Done()
}

(3)http协议读取HTML

HTTPHypertext Transfer Protocol)是一种用于在 Web 上进行数据传输的协议。它是一种无状态的应用层的协议,基于客户端-服务器模型,通过请求-响应的方式进行通信。

  • 语法:
http://<host>:<port>/<path>?<query>
http://<host><port><path><query>
http 协议方案(Scheme主机名域名,指示要访问的服务器的地址。要连接的服务器端口号,默认为80服务器上资源的路径包含了查询参数,用于向服务器传递附加的数据。
  • 示例:

在这里插入图片描述

  • 代码:
package main

import "github.com/zserge/lorca"

func main() {
	// (1)创建一个新的窗口,宽480 x 高320
	ui, _ := lorca.New("", "", 480, 320, "--remote-allow-origins=*")
	defer ui.Close()

	// (2)在Lorca中加载网络URL
	ui.Load("https://www.csdn.net/")

	// (3)运行窗口直关闭
	<-ui.Done()
}


参考文章:

  • 《github.com/zserge/lorca》

我的微信公众号 会飞的小猴子,等你来关注哦 ^ - ^


版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/131653604

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/758590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生】K8S单节点搭建

Kubernetes Kubernetes基础概念架构1、基础环境2、安装kubelet、kubeadm、kubectl 2、使用kubeadm引导集群1、下载各个机器需要的镜像2、初始化主节点 Kubernetes核心实战Pod Kubernetes基础概念 kubernetes具有以下特性&#xff1a; ● 服务发现和负载均衡 Kubernetes 可以使…

leetcode 669. 修剪二叉搜索树

2023.7.15 知道了如何删除二叉树节点的逻辑之后&#xff0c;这题就不难了。 可以参考删除二叉搜索树中的节点这篇文章。 下面直接上代码&#xff1a; class Solution { public:TreeNode* trimBST(TreeNode* root, int low, int high) {if(root nullptr) return root;root->…

MacOS使用USB接口与IPhone进行Socket通信

演示效果如下: 开源地址: GitHub - rsms/peertalk: iOS and Mac Cocoa library for communicating over USB 克隆源码: git clone https://github.com/rsms/peertalk.git 克隆后打开peertalk然后启动xcode工程 先启动MacOS服务端工程,再启动iOS客户端工程 客户端 服务端

[java安全]URLDNS

文章目录 [java安全]URLDNS前言HashMapURLURLStreamHandler调用过程调用链流程图POC [java安全]URLDNS 前言 URLDNS利用链是一条很简单的链子&#xff0c;可以用来查看java反序列化是否存在反序列化漏洞&#xff0c;如果存在&#xff0c;就会触发dns查询请求 它有如下优点&a…

spring复习:(35)在getBean时,在哪里根据普通bean和工厂bean进行区分处理来返回的?

在AbstractBeanFactory的doGetBean方法&#xff1a; 调用的getObjectForBeanInstance方法部分代码如下&#xff1a; 如果不是工厂bean,则直接将实例返回&#xff0c;否则调用getObjectFromFactoryBean方法获取工厂bean的getObject方法返回的对象 protected Object getObjectF…

Gradle和Aritifactory

Gradle和Aritifactory 本文链接&#xff1a;https://blog.csdn.net/feather_wch/article/details/131746580 文章目录 Gradle和AritifactoryGradle基本介绍Gradle插件开发流程本地仓库artifactory搭建添加仓库使用本地仓库gradle插件仓库引入 Gradle基本介绍 1、Gradle是一种…

node使用fluent-ffmpeg把webm格式的音频转成mp3

下载并安装ffmpeg http://ffmpeg.org/download.html?aemtntg-on https://www.gyan.dev/ffmpeg/builds/ 配置环境变量&#xff1a; 查询版本 装包&#xff1a; yarn add fluent-ffmpeg const ffmpeg require(fluent-ffmpeg)ffmpeg(/temp/ai/hello.webm).output(/temp/ai/h…

leetcode 542. 01 矩阵

给定一个由 0 和 1 组成的矩阵 mat &#xff0c;请输出一个大小相同的矩阵&#xff0c;其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[0,0,0],[0,1,0],[0,0,0]] 输出&#xff1a;[[0,0,0],…

TaskExecutor和ExecutorService的简单整合

文章目录 一、遇到问题二、达成目的三、开始调研1、使用Async获取线程池流程2、查看中间件线程池工具类3、观察AsyncConfigurer接口4、查看TaskExecutorAdapter源码 四、复盘总结 一、遇到问题 自己负责的项目想通过引入一个中间件&#xff0c;达到在业务场景维度的全链路日志…

【【51单片机的蜂鸣器-11】】

51单片机的蜂鸣器 DS1302我一直有问题搁置了几百天了 先来看看蜂鸣器 搞了一个礼拜verilog然后出去吃饭 估计自己得有10多天没看c语言和51单片机了 现在先处理一下蜂鸣器的问题 蜂鸣器 蜂鸣器分为有源蜂鸣器和无源蜂鸣器 有源内部自带震荡源&#xff0c;将正负极接上直流电压…

类之间的关系

1. 关系强弱顺序&#xff08;由强到弱&#xff09; 泛化实现组合聚合关联依赖 图中&#xff0c;组合和聚合标错了 2. 依赖 虚线箭头&#xff0c;箭头指向被依赖类依赖关系描述了两个类之间的临时关系。通常不会持续整个对象的生命周期&#xff0c;而是创建一个临时的关系以满…

string【1】介绍与使用(超详解哦)

string的介绍与使用 引言string类常用接口构造函数容量操作size与lengthcapacityresizereserveclearempty 元素访问迭代器访问beginendrbeginrend范围for 下标访问 字符串修改insertappendpush_backoperatorpop_backerase 字符串查找findrfind 非成员函数operator>>opera…

光场成像2.0——聚焦型光场相机

光场2.0 1. 发展历程 由于光场1.0从结构上子图像的分辨率严重依赖MLA子透镜的数量&#xff0c;因此分辨率一直受限&#xff0c;限制了光场1.0结构的广泛应用。针对此不足&#xff0c;在2008年&#xff0c;又一篇伟大的论文出现了&#xff0c;该论文提出了全分辨率光场渲染的概…

CS拒绝连接,Cobalt Strike连接失败,Cobalt Strike使用方法(一)

拒绝连接 connection refused:connect。 kali端&#xff08;服务器端&#xff09;和本地端win10。看看端口开启状态 先启动服务器端 查看端口开启状态&#xff0c;确定50050端口开启&#xff0c;可以参阅本文章点击跳转 没问题再往下看。 使用步骤 chmod 777 ./teamserver…

【运维工程师学习】Centos中MySQL替换MariaDB

【运维工程师学习】Centos8中MySQL替换MariaDB 1、查看已有的mysql2、MySQL官网tar包下载3、找到下载路径解压4、移动解压后的文件夹到/usr/local/mysql5、创建data文件夹&#xff0c;一般用于存放数据库文件数据6、创建用户组7、更改用户文件夹权限8、生成my.cnf文件9、编辑my…

排序子序列,倒置字符串讲解(图文并茂)

目录 1.排序子序列 2.倒置字符串 1.排序子序列 排序子序列_牛客笔试题_牛客网 (nowcoder.com) 首先题干中提到非递增序列和非递减序列&#xff0c;那么我们就要先弄明白什么是上述2种序列&#xff1a; 非递增序列&#xff1a;a[i] > a[i1] 如&#xff1a;3 2 1 或者 3 3 …

运动控制-达妙C#开源USB2CAN例程

C# Can总线资料不多, 达妙USB2CAN入口 http://www.dmbot.cn/forum.php?modviewthread&tid328&extrapage%3D1

怎么自学网络安全?遇到问题该怎么解决?

趁着今天下班&#xff0c;我花了几个小时整理了下&#xff0c;非常不易&#xff0c;希望大家可以点赞收藏支持一波&#xff0c;谢谢。 我的经历&#xff1a; 我 19 年毕业&#xff0c;大学专业是物联网工程&#xff0c;我相信很多人在象牙塔里都很迷茫&#xff0c;到了大三大…

帝国cms如何判断首页高亮显示

通过简单的代码判断当前页面是否为首页并且进行高亮的代码如下&#xff1a; 判断逻辑是获取当前栏目id&#xff0c;如果为空则为首页。 条件判断代码&#xff1a; <?php if(empty($GLOBALS[navclassid])){echo class"active";}?> 需要特别说明的此判断会…