CN107818121B - 一种html文件压缩方法、装置及电子设备 - Google Patents
一种html文件压缩方法、装置及电子设备 Download PDFInfo
- Publication number
- CN107818121B CN107818121B CN201610827354.2A CN201610827354A CN107818121B CN 107818121 B CN107818121 B CN 107818121B CN 201610827354 A CN201610827354 A CN 201610827354A CN 107818121 B CN107818121 B CN 107818121B
- Authority
- CN
- China
- Prior art keywords
- compression
- file
- compressed
- character
- element composition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/88—Mark-up to mark-up conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Document Processing Apparatus (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种HTML文件压缩方法、装置及电子设备,以及一种文件解压缩方法、装置及电子设备。其中,所述HTML文件压缩方法包括:根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容;根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。采用本申请提供的方法,可以有效精简HTML元素组成单元,进而减少原始HTML文本的大小,从而达到兼顾较高压缩力度及保留HTML语义两方面的效果。
Description
技术领域
本申请涉及网页技术,具体涉及一种HTML文件压缩方法、装置及电子设备;相应的,本申请同时涉及一种文件解压缩方法、装置及电子设备。
背景技术
HTML(超文本标记语言)作为互联网应用中使用最为广泛的语言其重要性不言而喻,虽然随着硬件技术的发展,网络传输速度和终端处理能力都在不断提高,但HTML页面结构也变得越来复杂,页面体积也在不断增加,对HTML页面进行有针对性压缩依然有着非常重要的意义。例如,在数据抓取领域,需要采集、储存大量的原始HTML页面,所以HTML页面的大小直接决定其硬件投入成本,能对HTML页面进一步压缩,就会进一步降低成本。
目前比较流行的HTML文件压缩技术主要有:Zip压缩,HTML最小化压缩。其中,Zip压缩一种广泛使用的文件压缩方式,它是针对文件的二进制内容进行压缩,通过减小重复0和1来达到压缩目的,其输出格式也是二进制数据,非可读文本,使用时需要进行解压缩。而HTML最小化是在保留HTML原始语义的情况下,删除HTML内容中多余的空白符(比如空格、制表符和换行符)来达到压缩目的,其输出格式仍然为HTML文本,只不过是内容显示非常紧凑,某些情况下,几千行的HTML文本经过最小化之后只剩下一行。
通过分析可知,Zip压缩方式是通用的压缩方式,并不针对HTML语义,因而无法精简HTML文本中存在的大量重复的标签、属性名称和属性值;HTML最小化是在保留HTML语义的前提下删除多余的空白符(空格、制表符、换行符等),可以一定程度上缩小,但压缩力度不够,而且也没有解决大量重复的标签、属性名称和属性值的问题。
综上所述,HTML文件压缩的现有技术存在无法兼顾较大压缩力度和保留HTML语义的问题。
发明内容
本申请提供一种HTML文件压缩方法、装置及电子设备,以解决现有技术下无法兼顾较大压缩力度和保留HTML语义的问题。本申请还提供一种文件解压缩方法、装置及电子设备。
本申请提供一种HTML文件压缩方法,包括:
根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;
根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容;
根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
可选的,所述生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,包括:
获取所述基础字符集;
将在所述待压缩HTML文件中存在的所述基础字符集内的字符作为不可用字符;
将去除所述不可用字符后的所述基础字符集内的字符作为可用字符,形成压缩标记可用字符集;
针对各个预设类别,根据所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数、和所述可用字符集,确定所述预设类别的各个元素组成单元对应的压缩标记;
根据各个元素各自对应的元素压缩标记,形成所述元素组成单元及其对应的压缩标记之间的对应关系。
可选的,所述确定所述预设类别的各个元素组成单元对应的压缩标记,包括:
统计获得所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数;
以所述预设类别的各个元素组成单元的所述出现次数的升序或降序方式,获得所述预设类别的各个元素组成单元的顺序号;
根据所述预设类别的各个元素组成单元的顺序号和所述可用字符集,生成所述预设类别的各个元素组成单元对应的压缩标记。
可选的,所述生成所述预设类别的各个元素组成单元对应的压缩标记,采用如下方式:
针对所述预设类别的各个元素组成单元,执行如下步骤:
对所述元素组成单元的顺序号除以所述可用字符集的元素数的值进行取整,获取顺序号为所取整数的元素组成单元对应的压缩标记,作为部分压缩标记;
以所述元素组成单元的顺序号对所述可用字符集的元素数取模的余数作为元素序号,获取所述可用字符集内所述元素序号对应的元素项;
根据所述部分压缩标记和所述元素项,拼接形成所述元素组成单元对应的压缩标记。
可选的,在所述将去除所述不可用字符后的所述基础字符集内的字符作为可用字符之后,还包括:
将去除预设的结束符后的所述可用字符集内的字符作为可用字符。
可选的,所述预设的结束符,采用如下方式设置:
将所述可用字符集内的特定字符作为所述预设的结束符。
可选的,所述根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,包括:
生成所述待压缩HTML文件的语义树;
逐层遍历所述语义树的各个节点,将所述节点对应的元素组成单元转换为与其对应的压缩标记。
可选的,所述逐层遍历所述语义树的各个节点,及将所述节点对应的元素组成单元转换为与其对应的压缩标记,采用如下方式:
依次遍历所述语义树的各个标签节点,针对当前标签节点执行如下步骤:
输出由所述当前标签节点的标签对应的压缩标记、和预设的标签前缀结尾符构成的第一连接字符串;
依次针对所述当前标签节点的各个属性子节点,输出由所述属性子节点的属性名对应的压缩标记、和预设的属性名前缀结尾符构成的第二连接字符串,以及输出由所述属性子节点的的属性值对应的压缩标记、和预设的结束符构成的第三连接字符串;
当所述当前标签节点处理结束时,输出预设的结束符。
可选的,所述输出由所述当前标签节点的标签对应的压缩标记、和预设的标签前缀结尾符构成的第一连接字符串,采用如下方式:
判断是否存在与所述当前标签节点的标签对应的压缩标记;若是,则输出所述第一连接字符串;若否,则输出所述当前标签节点的标签。
可选的,所述输出由所述属性子节点的属性名对应的压缩标记、和预设的属性名前缀结尾符构成的第二连接字符串,采用如下方式:
判断是否存在与所述属性名对应的压缩标记;若是,则输出所述第二连接字符串;若否,则输出所述属性名。
可选的,所述输出由所述属性子节点的的属性值对应的压缩标记、和预设的结束符构成的第三连接字符串,采用如下方式:
判断是否存在与所述属性值对应的压缩标记;若是,则输出所述第三连接字符串;若否,则输出所述属性值。
可选的,所述生成所述待压缩HTML文件的压缩文件,包括:
将所述对应关系集封装为结构化数据,作为元信息;
将包括所述元信息和所述压缩后的文件内容的文件作为所述压缩文件。
可选的,所述压缩标记基础字符包括ASCII码的不可见字符。
可选的,所述预设类别包括以下类别的至少一者:标签类,属性名类,属性值类。
可选的,还包括:
通过预设的通用压缩技术,对所述压缩文件进行文件压缩。
相应的,本申请还提供一种HTML文件压缩装置,包括:
对应关系生成单元,用于根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;
内容压缩单元,用于根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容;
压缩文件生成单元,用于根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
可选的,所述对应关系生成单元包括:
基础字符集获取子单元,用于获取所述基础字符集;
字符过滤子单元,用于将在所述待压缩HTML文件中存在的所述基础字符集内的字符作为不可用字符;
可用字符集生成子单元,用于将去除所述不可用字符后的所述基础字符集内的字符作为可用字符,形成压缩标记可用字符集;
压缩标记生成子单元,用于针对各个预设类别,根据所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数、和所述可用字符集,确定所述预设类别的各个元素组成单元对应的压缩标记;
对应关系生成子单元,用于根据各个元素各自对应的元素压缩标记,形成所述元素组成单元及其对应的压缩标记之间的对应关系。
相应的,本申请还提供一种电子设备,包括:
处理器;以及
存储器,用于存储实现HTML文件压缩方法的程序,该设备通电并通过所述处理器运行该HTML文件压缩方法的程序后,执行下述步骤:根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容;根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
相应的,本申请还提供一种文件解压缩方法,包括:
解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集;
根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,获得解压后的HTML文件内容;
将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
可选的,所述根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,采用如下方式:
依次读取所述正文内容的各个字节,针对当前读取的字节,采用如下方式处理:
若所述当前读取的字节对应的字符为所述压缩标记中的字符,则将该字符保存在压缩标记数组中;
若所述当前读取的字节对应的字符为预设的标签前缀结尾符、且所述压缩标记数组非空,则获取由所述压缩标记数组的元素构成的压缩标记对应的标签,并输出所述标签的前缀;以及将所述标签压栈,并清空所述压缩标记数组;
若所述当前读取的字节对应的字符为预设的标签前缀结尾符、且所述压缩标记数组为空,输出所述标签前缀结尾符;
若所述当前读取的字节对应的字符为预设的属性名前缀结尾符,且所述压缩标记数组非空,则输出当前属性名的前缀;以及将所述当前属性名压栈,并清空所述压缩标记数组;所述当前属性名是指,所述压缩标记数组的元素构成的压缩标记对应的属性名;
若所述当前读取的字节对应的字符为预设的属性名前缀结尾符,且所述压缩标记数组为空,则输出所述属性名前缀结尾符;
若所述当前读取的字节对应的字符非所述压缩标记中的字符,则输出所述当前读取的字节对应的字符;
若所述当前读取的字节对应的字符为预设的结束符、且所述压缩标记数组为空、且栈顶为标签的压缩标记,则输出与栈顶的压缩标记对应的标签的后缀;
若所述当前读取的字节对应的字符为预设的结束符、且所述压缩标记数组为空、且栈顶为属性名的压缩标记,则输出属性名的后缀。
相应的,本申请还提供一种文件解压缩装置,包括:
对应关系集获取单元,用于解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集;
内容解压单元,用于根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,获得解压后的HTML文件内容;
原始文件生成单元,用于将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
相应的,本申请还提供一种电子设备,包括:
处理器;以及
存储器,用于存储实现文件解压缩方法的程序,该设备通电并通过所述处理器运行该文件解压缩方法的程序后,执行下述步骤:解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集;根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,获得解压后的HTML文件内容;将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
与现有技术相比,本申请提供的HTML文件压缩方法,根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容;根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
使用本申请提供的HTML文件压缩方法,根据所述对应关系集将HTML中大量重复的预设类别的元素组成单元替换为对应的压缩标记;这种处理方式,使得由较少字节的压缩标记表达原来HTML元素组成单元较多字节的语义;因此,可以有效精简HTML元素组成单元,进而减少原始HTML文本的大小,从而达到兼顾较高压缩力度及保留HTML语义两方面的效果。
附图说明
图1是本申请提供的一种HTML文件压缩方法的实施例的流程图;
图2是本申请提供的一种HTML文件压缩方法的实施例的步骤S101的具体流程图;
图3是本申请提供的一种HTML文件压缩方法的实施例的语义树的示意图;
图4是本申请提供的一种HTML文件压缩方法的实施例的具体流程图;
图5是本申请提供的一种HTML文件压缩装置的实施例的示意图;
图6是本申请提供的一种电子设备的实施例的示意图。
图7是本申请提供的一种文件解压缩方法的实施例的流程图;
图8是本申请提供的一种文件解压缩方法的实施例的具体流程图;
图9是本申请提供的一种文件解压缩装置的实施例的示意图;
图10是本申请提供的一种电子设备的实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请中,提供了一种HTML文件压缩方法、装置及电子设备,一种文件解压缩方法、装置及电子设备。在下面的实施例中逐一进行详细说明。
本申请提供的HTML文件压缩方法,其核心的基本思想为:根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集,并根据所述对应关系集将HTML中大量重复的预设类别的元素组成单元替换为对应的压缩标记。由于通过较少字节的压缩标记表达原来HTML元素组成单元较多字节的语义,因而,可以有效精简HTML元素组成单元,进而减少原始HTML文本的大小。
请参考图1,其为本申请的HTML文件压缩方法实施例的流程图。所述方法包括如下步骤:
步骤S101:根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集。
HTML文件是由HTML元素定义的。HTML元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码。HTML元素以开始标签起始,以结束标签终止,元素的内容是开始标签与结束标签之间的内容。某些HTML元素具有空内容,空元素在开始标签中进行关闭(以开始标签的结束而结束)。大多数HTML元素可拥有属性。如表1所示:
表1
大多数HTML元素可以嵌套(可以包含其他HTML元素)。HTML文件由嵌套的HTML元素构成。例如,HTML文件包括如下代码:
由该段代码可见,该文件包含三个HTML元素。
HTML标签可以拥有属性。属性提供了有关HTML元素的更多的信息。属性总是以名称/值对的形式出现,比如:name="value"。属性总是在HTML元素的开始标签中规定,例如,HTML链接由<a>标签定义,链接的地址在href属性中指定:<a href="http://www.w3school.com.cn">This is a link</a>。
综上所述,HTML元素的组成单元至少包括HTML标签;对于非空元素而言,其组成单元还包括各个HTML属性名及对应HTML属性值,以及元素内容。本申请将HTML标签、HTML属性名、HTML属性值等统称为元素组成单元。
所述压缩标记为一个字符串,是所述元素组成单元的替代字符串。所述压缩标记与元素组成单元之间为一对一的对应关系,一个较多字节的元素组成单元可由一个较少字节的压缩标记表示,从而达到压缩目的。
所述压缩标记中的字符源于所述基础字符。作为一种优选的方案,所述基础字符可采用ASCII码的不可见字符。ASCII前32个字符多为控制字符,通过键盘难以输入(除了换行符、制表符外),通常在HTML页面中也很难出现,而且,ASCII字符在很多字符编码(比如UTF8、GBK等)中都是保留字节,所以这些ASCII码的不可见字符具有一定的排他性,能够避免出现压缩标记与未压缩的HTML原始内容相互混淆的问题。
ASCII中前32个字符如表2所示:
表2
所述预设类别包括以下类别的至少一者:标签类,属性名类,属性值类。可将预设类别设置为某一种类别,即:仅对一个类别的元素组成单元进行压缩,例如,仅对标签类的元素组成单元进行压缩;也可以将预设类别设置为所有类别,即:对所有类别的元素组成单元进行压缩,以获得更好的压缩效果。
具体实施时,本步骤可包括如下具体步骤:
步骤S1011:获取所述基础字符集。
步骤S1013:将在所述待压缩HTML文件中存在的所述基础字符集内的字符作为不可用字符。
由于所述待压缩HTML文件可能包括所述基础字符集内的字符,为了避免HTML原文中出现所述压缩标记中的字符(换句话说,避免压缩标记包括HTML文件中的字符),需要根据所述待压缩HTML文件对所述基础字符集进行字符过滤,排除掉原文中出现过的基础字符,将留下来的基础字符作为可用字符。
具体实施时,可通过遍历HTML原文中的每一个字节的方式,查找到原文中出现过的基础字符,将这些字符作为所述不可用字符。
步骤S1015:将去除所述不可用字符后的所述基础字符集内的字符作为压缩标记可用字符,形成压缩标记可用字符集。
将所述基础字符集内的所述不可用字符排除后,剩余的基础字符可作为形成压缩标记的可用字符。
需要注意的是,HTML元素以开始标签起始、以结束标签终止,不同标签的结束标签均不相同,例如,div元素的开始标签为<div>、结束标签为</div>;p元素的开始标签为<p>、结束标签为</p>。如果为每个结束标签生成与其对应的各自不同的压缩标记,则不仅会降低压缩标记的查找效率,还会增加压缩标记的字节长度,从而在一定程度上降低了压缩效果。
为了避免出现上述两个问题,可为所有的结束标签设置一个统一的结束符,即:所述预设的结束符。所述预设的结束符,可用于表示一个HTML元素的结束,其作用相当于HTML元素的结束标签。因此,在本步骤S1015后,还可包括:将去除预设的结束符后的所述可用字符集内的字符作为可用字符的步骤。
具体实施时,所述预设的结束符,可采用如下方式设置:将步骤S1015形成的可用字符集内的特定字符作为所述预设的结束符,例如,选取可用字符集的第一个字符(如:空字符)作为所述预设的结束符,其余字符保留在可用字符集中,作为压缩标记可用的字符。
步骤S1017:针对各个预设类别,根据所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数、和所述可用字符集,确定所述预设类别的各个元素组成单元对应的压缩标记。
考虑到标签与属性值可能为相同字符串、属性名与属性值也可能为相同字符串等问题,为了区分相同字符串表示的标签与属性值分别对应的压缩标记、区分相同字符串表示的属性名与属性值分别对应的压缩标记,本步骤S1017分别针对所述待压缩HTML文件中各个预设类别的元素组成单元进行如下处理:根据该预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数、和所述可用字符集,确定该预设类别的各个元素组成单元对应的压缩标记,例如,分别针对标签、属性名、属性值,确定各个标签、各个属性名、各个属性值分别对应的压缩标记。
所述确定所述预设类别的各个元素组成单元对应的压缩标记的步骤,可包括如下具体步骤:1)统计获得所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数;2)以所述预设类别的各个元素组成单元的所述出现次数的升序或降序方式,获得所述预设类别的各个元素组成单元的顺序号;3)根据所述预设类别的各个元素组成单元的顺序号和所述可用字符集,生成所述预设类别的各个元素组成单元对应的压缩标记。
以针对标签类的元素组成单元为例,首先需要统计获得各个标签的出现次数;然后,以各个标签的出现次数的升序或降序方式,获得各个标签的顺序号;最后,根据各个标签的顺序号和所述可用字符集,生成各个标签对应的压缩标记。
具体实施时,所述生成所述预设类别的各个元素组成单元对应的压缩标记的步骤,可采用如下方式:即针对所述预设类别的各个元素组成单元,执行如下步骤:1)对所述元素组成单元的顺序号除以所述可用字符集的元素数的值进行取整,获取顺序号为所取整数的元素组成单元对应的压缩标记,作为局部压缩标记;2)以所述元素组成单元的顺序号对所述可用字符集的元素数取模的余数作为元素序号,获取所述可用字符集内所述元素序号对应的元素项;3)根据所述局部压缩标记和所述元素项,拼接形成所述元素组成单元对应的压缩标记。
下面以计算公式的形式,对上述生成所述元素组成单元对应的压缩标记的过程进行说明,以便更为直观的表达该处理过程。具体实施时,生成所述预设类别的各个元素组成单元对应的压缩标记的步骤,可采用如下计算公式:
Token(i)=Token(floor(i/avaiable_charset_length))+AvaiableCharSet(i%avaiable_charset_length)
在该公式中,Token(i)表示顺序号为i的元素组成单元对应的压缩标记,i为大于等于1的整数,avaiable_charset_length表示可用字符集的元素数,floor(x)为对x取整的函数;Token(floor(i/avaiable_charset_length))即为所述局部压缩标记,Token(0)被定义为零长度的字符串;AvaiableCharSet(x)表示可用字符集的第x个字符;“+”表示字符串连接符。
下面通过举例方式,说明上述公式的应用。假设可用字符集为{0x01,0x02,0x03,0x04,0x05}。需要说明的是,这里为了说明问题,简化了可用字符集的内容,通常情况下可用字符集在28~30个之间。
例1,<div>标签在标签频次数组中排第二位,则按照公式计算应为:
Token(2)=Token(floor(2/5))+AvaiableCharSet(2%5)
=Token(0)+AvaiableCharSet(2)=AvaiableCharSet(2)=“0x02”
,则<div>对应的压缩标记为“0x02”。
例2,href属性名在属性频次数组中排第7位,则按照公式计算应为:
Token(7)=Token(floor(7/5))+AvaiableCharSet(7%5)
=Token(1)+AvaiableCharSet(7%5)
=AvaiableCharSet(1)+AvaiableCharSet(2)=“0x010x02”
,则href属性对应的压缩标记为“0x010x02”
需要说明的是,上述生成压缩标记的实施方式仅为一种可选的实施方式,在实际应用中,还可以采用其他实施方式生成压缩标记,例如,将上述公式中两个子串的连接顺序进行颠倒等方式。上述各种形式的变化,都只是具体实施方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。
在本实施例中,依次对HTML文件中出现过的标签、属性名、属性值分别进行统计,并按照出现次数由高到底进行排序。针对出现过一次以上的元素组成单元(标签、属性名、属性值)进行压缩标记的计算。由于分别针对标签、属性名、属性值这三类元素组成单元分别进行计算,因而,生成的所述对应关系集包括三个子集,分别为:标签与压缩标记的对应关系子集、属性名与压缩标记的对应关系子集、属性值与压缩标记的对应关系子集。
步骤S1019:根据各个元素各自对应的元素压缩标记,形成所述元素组成单元及其对应的压缩标记之间的对应关系。
请参考图2,其为本申请的HTML文件压缩方法实施例的步骤S101的具体流程图。图2所示的流程图对应上述步骤S1011至步骤S1019的处理过程,结合图2能够更直观的理解上述步骤S1011至步骤S1019的处理过程。
需要说明的是,本步骤S101既可以采用上述具体实施方式(步骤S1011-步骤S1019),还可以采用其它实施方式,只要能够根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系即可,例如,可省略步骤S1013,不对基础字符集进行过滤排除的处理;或者步骤S1015可不分别针对每个预设类别的元素组成单元进行处理,而对所有元素组成单元统一进行处理等。相对上述列举的其它实施方式而言,上述具体实施方式(步骤S1011-步骤S1019)是一种较为优选的实施方式。上述各种不同的实施方式,都只是具体实施方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。
步骤S103:根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容。
通过步骤S101获得各个元素组成单元及其对应的压缩标记之间的对应关系后,本步骤根据这些对应关系将预设类别的各个元素组成单元转换为与其对应的压缩标记,从而获得压缩后的文件内容。
作为一种可选的实施方式,本步骤可采用字符串匹配的方式,逐一将预设类别的各个元素组成单元转换为与其对应的压缩标记;这种处理方式,需要首先通过字符串匹配方法识别出各个元素组成单元,然后再查找与元素组成单元对应的压缩标记;因此,需要消耗较多的计算资源。
作为一种优选的实施方式,本步骤可包括如下具体步骤:1)生成所述待压缩HTML文件的语义树;2)逐层遍历所述语义树的各个节点,将所述节点对应的元素组成单元转换为与其对应的压缩标记。
1)生成所述待压缩HTML文件的语义树。
所述语义树也称为文档对象模型(Document Object Model,简称DOM),用于逐层递归遍历每个HTML节点。
DOM定义了访问和操作HTML文件的标准方法。请参考图3,其为本申请的HTML文件压缩方法实施例的语义树的示意图。图3中的语义树将HTML文件呈现为带有元素、属性和文本的树结构(节点树)。
2)逐层遍历所述语义树的各个节点,将所述节点对应的元素组成单元转换为与其对应的压缩标记。
具体实施时,本步骤可依次遍历HTML标签节点,针对当前遍历到的标签节点可执行如下步骤:2.1)输出由所述当前标签节点的标签对应的压缩标记、和预设的标签前缀结尾符构成的第一连接字符串;2.2)依次针对所述当前标签节点的各个属性子节点,输出由所述属性子节点的属性名对应的压缩标记、和预设的属性名前缀结尾符构成的第二连接字符串,以及输出由所述属性子节点的属性值对应的压缩标记、和预设的结束符构成的第三连接字符串;2.3)当所述当前标签节点处理结束时,输出预设的结束符。
所述预设的标签前缀结尾符,用于表示开始标签对应的压缩标记的结尾,在文件解压缩时,若识别到所述预设的标签前缀结尾符,则可确定该字符之前的压缩标记对应的是开始标签。
具体实施时,上述2.1)的步骤可采用如下方式实施:如果该节点名称(标签名)出现在标签与压缩标记的对应关系子集中,则输出该对应关系子集对应的压缩标记和预设的标签前缀结尾符(如:空格);如果该节点名称没有出现在标签与压缩标记的对应关系子集中,则直接输出原始HTML标签文本。
需要注意的是,“结尾符”和“结束符”不一样,“结尾符”是用来声明一个元素组成单元(如:标签或属性名)的前缀到哪里为止,例如,标签<div>…</div>,第一个“>”表示标签前缀的“结尾”,“</div>”则是整个标签的结束符,本实施例中的预设的结束符用一个字节表示。
所述预设的属性名前缀结尾符也可称为属性(由属性名和属性值构成)前缀结尾符,用于表示属性名对应的压缩标记的结尾,在文件解压缩时,若识别到所述预设的属性名前缀结尾符,则可确定该字符之前的压缩标记对应的是属性名。
处理属性节点和标签节点的方式类似,如果属性名出现在属性名与压缩标记的对应关系子集中,则输出该对应关系子集对应的压缩标记和预设的属性名前缀结尾符(如:等号),并在输出属性值之后输出预设的结束符;如果没有对应的压缩标记,则直接输出属性节点原始内容。
处理完属性名之后,开始对属性值处理,处理方式和处理属性节点、标签节点的方式类似,如果在属性值与压缩标记的对应关系子集中存在该属性值,则输出该对应关系子集对应的压缩标记和预设的结束符(属性值由于没有包含关系,可以直接用预设的结束符作为结尾);如果有对应的压缩标记,则直接输出属性值的原始内容。
在处理完成所述当前标签节点下所有子节点后,说明单签标签节点处理结束,此时,输出预设的结束符,用于表示该标签的结束。
通过上述过程对当前遍历到的标签节点进行压缩处理后,如果还有没处理的标签节点,则将通过语义树遍历到下一个标签节点,通过上述过程对下一个标签节点进行压缩处理。当所有标签节点都被处理完成后,上述过程中逐步输出的内容(第一连接字符串、第二连接字符串、第三连接字符串等)构成所述压缩后的文件内容。
步骤S105:根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
本申请提供的HTML文件压缩方法,所述压缩后的文件内容是基于所述对应关系集生成的,并且所述对应关系集与待压缩HTML文件具有一对一的关系。可见,在文件解压缩时需要依据所述对应关系集将压缩内容还原为原始内容。因此,通过步骤S103获得所述压缩后的文件内容后,还需要根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
具体实施时,本步骤可包括如下具体步骤:1)将所述对应关系集封装为结构化数据,作为元信息;2)将包括所述元信息和所述压缩后的文件内容的文件作为所述压缩文件。
该实施方式首先将所述对应关系集封装为结构化数据,例如,可以使用JSON结构或者更精简的结构,并将该结构化数据输出到压缩后的文件内容的第一行作为元信息(Meta信息);然后,将包括元信息和所述压缩后的文件内容的文件作为所述待压缩HTML文件的压缩文件。
请参考图4,其为本申请的HTML文件压缩方法实施例的具体流程图。图4所示的流程图对应上述具体实施方式的处理过程,结合图4能够更直观的理解上述具体实施方式的处理过程。
具体实施时,为了获得更好的压缩效果,还可以再通过Zip、HTML最小化等压缩技术对上述形成的压缩文件进行二次压缩,以达到更优的压缩效果。
请参考表3,该表给出采用目前常用的压缩方法及本申请提供的压缩方法分别获得的HTML压缩文件的文件大小,用于说明采用本申请提供的压缩方法能够达到的压缩效果。
表3
本实验选取了淘宝、优酷、百度几个国内知名网站的页面进行对比测试,可以得出如下结论:对于原始页面,采用本申请提供的方法有13%~50%的压缩率,在HTML最小化和Zip压缩多重压缩的前提下,也有0.5~6%的效果提升。需要说明的是,表3中本申请的方法对应的压缩效果数据是对标签类、属性名类和属性值类这三个类别的元素组成单元同时进行压缩后形成的数据。
在上述的实施例中,提供了一种HTML文件压缩方法,与之相对应的,本申请还提供一种HTML文件压缩装置。该装置是与上述方法的实施例相对应。
请参看图5,其为本申请的HTML文件压缩装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种HTML文件压缩装置,包括:对应关系生成单元101,用于根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;内容压缩单元103,用于根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容;压缩文件生成单元105,用于根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
可选的,所述对应关系生成单元101包括:
基础字符集获取子单元,用于获取所述基础字符集;
字符过滤子单元,用于将在所述待压缩HTML文件中存在的所述基础字符集内的字符作为不可用字符;
可用字符集生成子单元,用于将去除所述不可用字符后的所述基础字符集内的字符作为可用字符,形成压缩标记可用字符集;
压缩标记生成子单元,用于针对各个预设类别,根据所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数、和所述可用字符集,确定所述预设类别的各个元素组成单元对应的压缩标记;
对应关系生成子单元,用于根据各个元素各自对应的元素压缩标记,形成所述元素组成单元及其对应的压缩标记之间的对应关系。
可选的,所述压缩标记生成子单元包括生成子单元;
所述生成子单元,用于确定所述预设类别的各个元素组成单元对应的压缩标记;
可选的,所述生成子单元包括:
统计子单元,用于统计获得所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数;
排序子单元,用于以所述预设类别的各个元素组成单元的所述出现次数的升序或降序方式,获得所述预设类别的各个元素组成单元的顺序号;
第一压缩标记生成子单元,用于根据所述预设类别的各个元素组成单元的顺序号和所述可用字符集,生成所述预设类别的各个元素组成单元对应的压缩标记。
所述第一压缩标记生成子单元包括:
第一生成子单元,用于对所述元素组成单元的顺序号除以所述可用字符集的元素数的值进行取整,获取顺序号为所取整数的元素组成单元对应的压缩标记,作为部分压缩标记;
第二子单元,用于以所述元素组成单元的顺序号对所述可用字符集的元素数取模的余数作为元素序号,获取所述可用字符集内所述元素序号对应的元素项;
合成子单元,用于根据所述部分压缩标记和所述元素项,拼接形成所述元素组成单元对应的压缩标记。
所述对应关系生成单元101还包括:
设置子单元,用于将去除预设的结束符后的所述可用字符集内的字符作为可用字符。
可选的,所述预设的结束符,采用如下方式设置:
将所述可用字符集内的特定字符作为所述预设的结束符。
可选的,所述内容压缩单元103包括:
语义树生成子单元,用于生成所述待压缩HTML文件的语义树;
转换子单元,用于逐层遍历所述语义树的各个节点,将所述节点对应的元素组成单元转换为与其对应的压缩标记。
可选的,所述转换子单元,具体用于依次遍历所述语义树的各个标签节点,针对当前标签节点执行如下步骤:
输出由所述当前标签节点的标签对应的压缩标记、和预设的标签前缀结尾符构成的第一连接字符串;
依次针对所述当前标签节点的各个属性子节点,输出由所述属性子节点的属性名对应的压缩标记、和预设的属性名前缀结尾符构成的第二连接字符串,以及输出由所述属性子节点的的属性值对应的压缩标记、和预设的结束符构成的第三连接字符串;
当所述当前标签节点处理结束时,输出预设的结束符。
可选的,所述输出由所述当前标签节点的标签对应的压缩标记、和预设的标签前缀结尾符构成的第一连接字符串,采用如下方式:
判断是否存在与所述当前标签节点的标签对应的压缩标记;若是,则输出所述第一连接字符串;若否,则输出所述当前标签节点的标签。
可选的,所述输出由所述属性子节点的属性名对应的压缩标记、和预设的属性名前缀结尾符构成的第二连接字符串,采用如下方式:
判断是否存在与所述属性名对应的压缩标记;若是,则输出所述第二连接字符串;若否,则输出所述属性名。
可选的,所述输出由所述属性子节点的的属性值对应的压缩标记、和预设的结束符构成的第三连接字符串,采用如下方式:
判断是否存在与所述属性值对应的压缩标记;若是,则输出所述第三连接字符串;若否,则输出所述属性值。
可选的,所述压缩文件生成单元105包括:
封装子单元,用于将所述对应关系集封装为结构化数据,作为元信息;
生成子单元,用于将包括所述元信息和所述压缩后的文件内容的文件作为所述压缩文件。
可选的,所述压缩标记基础字符包括ASCII码的不可见字符。
可选的,所述预设类别包括以下类别的至少一者:标签类,属性名类,属性值类。
可选的,所述装置还包括:
二次压缩单元,用于通过预设的通用压缩技术,对所述压缩文件进行文件压缩。
请参考图6,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。
本实施例的一种电子设备,该电子设备包括:处理器101;以及存储器103,用于存储实现HTML文件压缩方法的程序,该设备通电并通过所述处理器101运行该HTML文件压缩方法的程序后,执行下述步骤:根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容;根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
本申请提供的HTML文件压缩方法,根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;根据所述对应关系集将所述各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容;根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。采用本申请提供的HTML文件压缩方法,使得由较少字节的压缩标记表达原来HTML元素组成单元较多字节的语义;因此,可以有效精简HTML元素组成单元,进而减少原始HTML文本的大小,从而达到兼顾较高压缩力度及保留HTML语义两方面的效果。
与上述的HTML文件压缩方法相对应,本申请还提供一种文件解压缩方法。请参考图7,其为本申请提供的一种文件解压缩方法实施例的流程图,本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。本申请提供的一种文件解压缩方法包括:
步骤S101:解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集。
所述待解压文件包括两部分信息:元信息和正文内容。其中,所述元信息包括有元素组成单元和压缩标记之间的对应关系集,该对应关系集可为结构化数据形式,例如,JSON结构等。
要实现对待解压文件的解压缩处理,需要首先从待解压文件中取出元信息(Meta信息),元信息通常存储在待解压文件的头部(如:第一行);然后,就需要对元信息进行解析,从中提取出所述对应关系集。
所述对应关系集包括各个元素组成单元及其对应的压缩标记之间的对应关系。关于所述对应关系集的说明请参考上述第一实施例的相关说明,此处不再赘述。
步骤S103:根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,获得解压后的HTML文件内容。
所述待解压文件的正文内容是通过上述实施例一生成的压缩后的内容。由于所述正文内容根据所述对应关系集对原始HTML内容压缩形成,因此,所述正文内容包括各个元素组成单元对应的压缩标记。本申请提供的文件解压缩方法,就是要将这些压缩标记还原为原始的元素组成单元(如:标签、属性名、属性值),从而获得解压后的HTML文件内容。
所述正文内容不仅包括所述压缩标记,还可能包括原始文件中未经压缩的内容,即:未经压缩的HTML原始内容。所述压缩标记和所述未经压缩的HTML原始内容在所述正文内容中以字节形式存储,要将正文中的内容还原为HTML文件的原始内容,可依次读取所述正文内容的各个字节,针对当前读取的字节,采用如下方式之一进行处理:
1)若所述当前读取的字节对应的字符为所述压缩标记中的字符,则将该字符保存在压缩标记数组中。
如果当前读取的字节所表示的字符(当前字符)为压缩标记可采用的字符,则表示当前字符属于压缩标记的一部分,需要将当前字符保存在临时的压缩标记数组中。在压缩标记被识别出之前,将组成压缩标记的各个字符临时保存在所述压缩标记数组中;在压缩标记被识别出之后,将清空所述压缩标记数组,以用于保存组成下一个压缩标记的各个字符。
具体实施时,可首先根据所述对应关系集生成所述压缩标记可用的字符集,即:上述实施例一所述的压缩标记可用字符集。当从所述正文内容中读取出一个字节时,在所述压缩标记可用字符集中查找是否存在该字节表示的字符;若是,则可判定当前字符为压缩标记的一部分,应将其存储在所述压缩标记数组中。
2)若所述当前读取的字节对应的字符为预设的标签前缀结尾符、且所述压缩标记数组非空,则获取由所述压缩标记数组的元素构成的压缩标记对应的标签,并输出所述标签的前缀;以及将所述标签压栈,并清空所述压缩标记数组。
如果当前字符为预设的标签前缀结尾符(如:空格),并且所述压缩标记数组不为空,则表示所述压缩标记数组对应的压缩标记为某一个标签的压缩标记,且此位置为标签前缀结尾处;这种情况下,可在所述对应关系集中查找该压缩标记对应的标签,然后,输出该标签的前缀。
例如,所述压缩标记数组对应的压缩标记为标签<div>的压缩标记,则输出该标签前缀为“<div”。
需要注意的是,一方面,由于所述压缩标记数组只保存一个压缩标记的字符,在输出标签前缀后,需要清空所述压缩标记数组,以用于保存组成下一个压缩标记的各个字符;另一方面,由于当前字符处为标签前缀结尾处,该标签后续可能有属性名、属性值需要处理,该标签还未处理结束,因此,还需要保存该标签,以便在标签处理完成后输出标签的后缀(如:标签<div>的后缀为</div>),具体实施时,考虑到标签具有嵌套的性质,可将该标签压栈。
3)若所述当前读取的字节对应的字符为预设的标签前缀结尾符、且所述压缩标记数组为空,输出所述标签前缀结尾符。
本方式与上述方式2相对应,在当前字符为标签前缀结尾符时,如果所述压缩标记数组为空,则表示该字符不是标签的结尾符,这种情况下,直接输出所述标签前缀结尾符即可。
4)若所述当前读取的字节对应的字符为预设的属性名前缀结尾符,且所述压缩标记数组非空,则输出当前属性名的前缀;以及将所述当前属性名压栈,并清空所述压缩标记数组。
所述当前属性名是指,所述压缩标记数组的元素构成的压缩标记对应的属性名。
如果当前字符为预设的属性名前缀结尾符(如:等号),并且所述压缩标记数组不为空,则表示所述压缩标记数组对应的压缩标记为某一个属性名的压缩标记,且此位置为属性名前缀结尾处;这种情况下,可在所述对应关系集中查找该压缩标记对应的属性名,然后,输出该属性名的前缀。
例如,所述压缩标记数组对应的压缩标记为属性名“class”的压缩标记,则输出该属性名前缀为“class=””。
与标签的处理相同,由于还未输出该属性名的属性值,当前属性名还未处理结束,因而,也需要保存该属性名,以便在处理完该属性后输出属性的后缀(如:class=”的后缀为双引号),本实施例将当前属性名压栈。
此外,由于所述压缩标记数组只保存一个压缩标记的字符,在输出属性名前缀后,还需要清空所述压缩标记数组,以用于保存组成下一个压缩标记的各个字符。
5)若所述当前读取的字节对应的字符为预设的属性名前缀结尾符,且所述压缩标记数组为空,则输出所述属性名前缀结尾符。
本方式与上述方式4相对应,在当前字符为属性名前缀结尾符时,如果所述压缩标记数组为空,则表示该字符不是属性名的结尾符,这种情况下,直接输出所述属性名前缀结尾符即可。
6)若所述当前读取的字节对应的字符非所述压缩标记中的字符,则输出所述当前读取的字节对应的字符。
如果当前字符不是所述压缩标记可用字符集内的字符,则表示该字符为原始HTML文件中未经压缩的内容,直接输出当前字符即可。
7)若所述当前读取的字节对应的字符为预设的结束符、且所述压缩标记数组为空、且栈顶为标签的压缩标记,则输出与栈顶的压缩标记对应的标签的后缀。
如果当前字符为预设的结束符(如:空字符),并且所述压缩标记数组为空,并且栈顶为某个标签的压缩标记,则表示该标签已经处理结束;这种情况下,可输出该标签的标签后缀。
例如,栈顶的压缩标记为标签<div>的压缩标记,则输出该标签后缀为“</div>”。
8)若所述当前读取的字节对应的字符为预设的结束符、且所述压缩标记数组为空、且栈顶为属性名的压缩标记,则输出属性名的后缀。
如果当前字符为预设的结束符(如:空字符),并且所述压缩标记数组为空,并且栈顶为某个属性名的压缩标记,则表示该属性名已经处理结束;这种情况下,可输出该属性名的后缀,例如:双引号。
步骤S105:将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
请参考图8,其为本申请的文件解压缩方法实施例的具体流程图。图8所示的流程图对应上述具体实施方式,结合图8能够更直观的理解上述实施方式的处理过程。
在上述的实施例中,提供了一种文件解压缩方法,与之相对应的,本申请还提供一种文件解压缩装置。该装置是与上述方法的实施例相对应。
请参看图9,其为本申请的文件解压缩装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种文件解压缩装置,包括:对应关系集获取单元101,用于解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集;内容解压单元103,用于根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,获得解压后的HTML文件内容;原始文件生成单元105,用于将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
请参考图10,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。
本实施例的一种电子设备,该电子设备包括:处理器101;以及存储器103,用于存储实现文件解压缩方法的程序,该设备通电并通过所述处理器101运行该文件解压缩方法的程序后,执行下述步骤:解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集;根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,获得解压后的HTML文件内容;将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (20)
1.一种HTML文件压缩方法,其特征在于,包括:
根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;
根据所述对应关系集将待压缩HTML文件中重复的预设类别的各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容,其中,所述各个元素组成单元用于表达待压缩HTML文件多字节的语义;
根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件;
其中,根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集,包括:
获取所述基础字符集;
将在所述待压缩HTML文件中存在的所述基础字符集内的字符作为不可用字符;
将去除所述不可用字符后的所述基础字符集内的字符作为可用字符,形成压缩标记可用字符集;
针对各个预设类别,根据所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数、和所述可用字符集,确定所述预设类别的各个元素组成单元对应的压缩标记;
根据各个元素各自对应的元素压缩标记,形成所述元素组成单元及其对应的压缩标记之间的对应关系。
2.根据权利要求1所述的HTML文件压缩方法,其特征在于,所述确定所述预设类别的各个元素组成单元对应的压缩标记,包括:
统计获得所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数;
以所述预设类别的各个元素组成单元的所述出现次数的升序或降序方式,获得所述预设类别的各个元素组成单元的顺序号;
根据所述预设类别的各个元素组成单元的顺序号和所述可用字符集,生成所述预设类别的各个元素组成单元对应的压缩标记。
3.根据权利要求2所述的HTML文件压缩方法,其特征在于,所述生成所述预设类别的各个元素组成单元对应的压缩标记,采用如下方式:
针对所述预设类别的各个元素组成单元,执行如下步骤:
对所述元素组成单元的顺序号除以所述可用字符集的元素数的值进行取整,获取顺序号为所取整数的元素组成单元对应的压缩标记,作为部分压缩标记;
以所述元素组成单元的顺序号对所述可用字符集的元素数取模的余数作为元素序号,获取所述可用字符集内所述元素序号对应的元素项;
根据所述部分压缩标记和所述元素项,拼接形成所述元素组成单元对应的压缩标记。
4.根据权利要求1所述的HTML文件压缩方法,其特征在于,在所述将去除所述不可用字符后的所述基础字符集内的字符作为可用字符之后,还包括:
将去除预设的结束符后的所述可用字符集内的字符作为可用字符。
5.根据权利要求4所述的HTML文件压缩方法,其特征在于,所述预设的结束符,采用如下方式设置:
将所述可用字符集内的特定字符作为所述预设的结束符。
6.根据权利要求1所述的HTML文件压缩方法,其特征在于,所述根据所述对应关系集将待压缩HTML文件中重复的预设类别的各个元素组成单元转换为与其对应的压缩标记,包括:
生成所述待压缩HTML文件的语义树;
逐层遍历所述语义树的各个节点,将所述节点对应的元素组成单元转换为与其对应的压缩标记。
7.根据权利要求6所述的HTML文件压缩方法,其特征在于,所述逐层遍历所述语义树的各个节点,及将所述节点对应的元素组成单元转换为与其对应的压缩标记,采用如下方式:
依次遍历所述语义树的各个标签节点,针对当前标签节点执行如下步骤:
输出由所述当前标签节点的标签对应的压缩标记、和预设的标签前缀结尾符构成的第一连接字符串;
依次针对所述当前标签节点的各个属性子节点,输出由所述属性子节点的属性名对应的压缩标记、和预设的属性名前缀结尾符构成的第二连接字符串,以及输出由所述属性子节点的属性值对应的压缩标记、和预设的结束符构成的第三连接字符串;
当所述当前标签节点处理结束时,输出预设的结束符。
8.根据权利要求7所述的HTML文件压缩方法,其特征在于,所述输出由所述当前标签节点的标签对应的压缩标记、和预设的标签前缀结尾符构成的第一连接字符串,采用如下方式:
判断是否存在与所述当前标签节点的标签对应的压缩标记;若是,则输出所述第一连接字符串;若否,则输出所述当前标签节点的标签。
9.根据权利要求7所述的HTML文件压缩方法,其特征在于,所述输出由所述属性子节点的属性名对应的压缩标记、和预设的属性名前缀结尾符构成的第二连接字符串,采用如下方式:
判断是否存在与所述属性名对应的压缩标记;若是,则输出所述第二连接字符串;若否,则输出所述属性名。
10.根据权利要求7所述的HTML文件压缩方法,其特征在于,所述输出由所述属性子节点的的属性值对应的压缩标记、和预设的结束符构成的第三连接字符串,采用如下方式:
判断是否存在与所述属性值对应的压缩标记;若是,则输出所述第三连接字符串;若否,则输出所述属性值。
11.根据权利要求1所述的HTML文件压缩方法,其特征在于,所述生成所述待压缩HTML文件的压缩文件,包括:
将所述对应关系集封装为结构化数据,作为元信息;
将包括所述元信息和所述压缩后的文件内容的文件作为所述压缩文件。
12.根据权利要求1所述的HTML文件压缩方法,其特征在于,所述压缩标记基础字符包括ASCII码的不可见字符。
13.根据权利要求1所述的HTML文件压缩方法,其特征在于,所述预设类别包括以下类别的至少一者:标签类,属性名类,属性值类。
14.根据权利要求1所述的HTML文件压缩方法,其特征在于,还包括:
通过预设的通用压缩技术,对所述压缩文件进行文件压缩。
15.一种HTML文件压缩装置,其特征在于,包括:
对应关系生成单元,用于根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;
内容压缩单元,用于根据所述对应关系集将待压缩HTML文件中重复的预设类别的各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容,其中,所述各个元素组成单元用于表达待压缩HTML文件多字节的语义;
压缩文件生成单元,用于根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件;
其中,所述对应关系生成单元包括:
基础字符集获取子单元,用于获取所述基础字符集;
字符过滤子单元,用于将在所述待压缩HTML文件中存在的所述基础字符集内的字符作为不可用字符;
可用字符集生成子单元,用于将去除所述不可用字符后的所述基础字符集内的字符作为可用字符,形成压缩标记可用字符集;
压缩标记生成子单元,用于针对各个预设类别,根据所述预设类别的各个元素组成单元在所述待压缩HTML文件中的出现次数、和所述可用字符集,确定所述预设类别的各个元素组成单元对应的压缩标记;
对应关系生成子单元,用于根据各个元素各自对应的元素压缩标记,形成所述元素组成单元及其对应的压缩标记之间的对应关系。
16.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储实现HTML文件压缩方法的程序,该设备通电并通过所述处理器运行该HTML文件压缩方法的程序后,执行下述步骤:根据待压缩HTML文件和预设的压缩标记基础字符集,生成预设类别的各个元素组成单元及其对应的压缩标记之间的对应关系,形成对应关系集;根据所述对应关系集将待压缩HTML文件中重复的预设类别的各个元素组成单元转换为与其对应的压缩标记,获得压缩后的文件内容,其中,所述各个元素组成单元用于表达待压缩HTML文件多字节的语义;根据所述压缩后的文件内容和所述对应关系集,生成所述待压缩HTML文件的压缩文件。
17.一种文件解压缩方法,其特征在于,包括:
解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集;
根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,获得解压后的HTML文件内容,其中,所述待解压文件的正文内容包括所述压缩标记和未经压缩的HTML原始内容;所述压缩标记为根据所述对应关系集将待压缩HTML文件中重复的预设类别的各个元素组成单元转换形成的;所述根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,采用依次读取所述正文内容的各个字节,针对当前读取的字节进行解压还原;
将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
18.根据权利要求17所述的文件解压缩方法,其特征在于,所述根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,采用如下方式:
依次读取所述正文内容的各个字节,针对当前读取的字节,采用如下方式处理:
若所述当前读取的字节对应的字符为所述压缩标记中的字符,则将该字符保存在压缩标记数组中;
若所述当前读取的字节对应的字符为预设的标签前缀结尾符、且所述压缩标记数组非空,则获取由所述压缩标记数组的元素构成的压缩标记对应的标签,并输出所述标签的前缀;以及将所述标签压栈,并清空所述压缩标记数组;
若所述当前读取的字节对应的字符为预设的标签前缀结尾符、且所述压缩标记数组为空,输出所述标签前缀结尾符;
若所述当前读取的字节对应的字符为预设的属性名前缀结尾符,且所述压缩标记数组非空,则输出当前属性名的前缀;以及将所述当前属性名压栈,并清空所述压缩标记数组;所述当前属性名是指,所述压缩标记数组的元素构成的压缩标记对应的属性名;
若所述当前读取的字节对应的字符为预设的属性名前缀结尾符,且所述压缩标记数组为空,则输出所述属性名前缀结尾符;
若所述当前读取的字节对应的字符非所述压缩标记中的字符,则输出所述当前读取的字节对应的字符;
若所述当前读取的字节对应的字符为预设的结束符、且所述压缩标记数组为空、且栈顶为标签的压缩标记,则输出与栈顶的压缩标记对应的标签的后缀;
若所述当前读取的字节对应的字符为预设的结束符、且所述压缩标记数组为空、且栈顶为属性名的压缩标记,则输出属性名的后缀。
19.一种文件解压缩装置,其特征在于,包括:
对应关系集获取单元,用于解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集;
内容解压单元,用于根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,获得解压后的HTML文件内容,其中,所述待解压文件的正文内容包括所述压缩标记和未经压缩的HTML原始内容;所述压缩标记为根据所述对应关系集将待压缩HTML文件中重复的预设类别的各个元素组成单元转换形成的;所述根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,采用依次读取所述正文内容的各个字节,针对当前读取的字节进行解压还原;
原始文件生成单元,用于将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
20.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储实现文件解压缩方法的程序,该设备通电并通过所述处理器运行该文件解压缩方法的程序后,执行下述步骤:解析待解压文件中的元信息,获得元素组成单元和压缩标记之间的对应关系集,其中,所述待解压文件的正文内容包括所述压缩标记和未经压缩的HTML原始内容;所述压缩标记为根据所述对应关系集将待压缩HTML文件中重复的预设类别的各个元素组成单元转换形成的;根据所述对应关系集将所述待解压文件的正文内容中的各个压缩标记转换为与其对应的元素组成单元,采用依次读取所述正文内容的各个字节,针对当前读取的字节进行解压还原;获得解压后的HTML文件内容;将包括所述解压后的HTML文件内容的文件作为所述待解压文件的原始HTML文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610827354.2A CN107818121B (zh) | 2016-09-14 | 2016-09-14 | 一种html文件压缩方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610827354.2A CN107818121B (zh) | 2016-09-14 | 2016-09-14 | 一种html文件压缩方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107818121A CN107818121A (zh) | 2018-03-20 |
CN107818121B true CN107818121B (zh) | 2022-05-10 |
Family
ID=61601448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610827354.2A Active CN107818121B (zh) | 2016-09-14 | 2016-09-14 | 一种html文件压缩方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107818121B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112134644B (zh) * | 2019-06-25 | 2022-07-15 | 比亚迪股份有限公司 | 编码方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101040444A (zh) * | 2004-10-18 | 2007-09-19 | 诺基亚公司 | 自适应压缩方案 |
CN101217557A (zh) * | 2007-01-03 | 2008-07-09 | 三星电子株式会社 | web服务器及其web服务方法 |
CN101383848A (zh) * | 2007-09-04 | 2009-03-11 | Lg电信株式会社 | 用于移动网络服务的系统和方法 |
CN101783788A (zh) * | 2009-01-21 | 2010-07-21 | 联想(北京)有限公司 | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 |
FR3006473A1 (fr) * | 2013-06-04 | 2014-12-05 | Euriware | Procede d'echange de donnees descriptives d'installations techniques |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020107866A1 (en) * | 2001-02-06 | 2002-08-08 | Cousins Robert E. | Method for compressing character-based markup language files including non-standard characters |
-
2016
- 2016-09-14 CN CN201610827354.2A patent/CN107818121B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101040444A (zh) * | 2004-10-18 | 2007-09-19 | 诺基亚公司 | 自适应压缩方案 |
CN101217557A (zh) * | 2007-01-03 | 2008-07-09 | 三星电子株式会社 | web服务器及其web服务方法 |
CN101383848A (zh) * | 2007-09-04 | 2009-03-11 | Lg电信株式会社 | 用于移动网络服务的系统和方法 |
CN101783788A (zh) * | 2009-01-21 | 2010-07-21 | 联想(北京)有限公司 | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 |
FR3006473A1 (fr) * | 2013-06-04 | 2014-12-05 | Euriware | Procede d'echange de donnees descriptives d'installations techniques |
Non-Patent Citations (1)
Title |
---|
"改进压缩特征的实时压缩跟踪算法";崔灿 等;《计算机工程与应用》;20160715;第210-216页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107818121A (zh) | 2018-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083805B (zh) | 一种将Word文件转换为EPUB文件的方法及系统 | |
US7509574B2 (en) | Method and system for reducing delimiters | |
US8024353B2 (en) | Method and system for sequentially accessing compiled schema | |
JP5044942B2 (ja) | 文書分析において受付状態を決定するシステム及び方法 | |
WO2017036348A1 (zh) | 一种可扩展标记语言xml文档的压缩、解压方法和装置 | |
US20060184547A1 (en) | Method and system for fast encoding of data documents | |
JP5789236B2 (ja) | 構造化文書分析方法、構造化文書分析プログラム、および構造化文書分析システム | |
CN113127776A (zh) | 面包屑路径生成方法、装置及终端设备 | |
JP4776389B2 (ja) | 符号化文書復号方法及びシステム | |
CN107818121B (zh) | 一种html文件压缩方法、装置及电子设备 | |
O'Connor et al. | Desirable properties for XML update mechanisms | |
US8930808B2 (en) | Processing rich text data for storing as legacy data records in a data storage system | |
CN112069305B (zh) | 数据筛选方法、装置及电子设备 | |
CN113743432A (zh) | 一种图像实体信息获取方法、设备、电子设备和存储介质 | |
CN111597292A (zh) | 基于网页标签位置的文本格式化清洗方法 | |
US12072861B2 (en) | Regulatory tree parser | |
US20060212799A1 (en) | Method and system for compiling schema | |
CN115688788A (zh) | 用于审计领域的命名实体识别模型的训练方法及相关设备 | |
CN114722781A (zh) | 一种将流式文档转换为ofd文档的方法和装置 | |
Al-Msie'deen | Softcloud: A tool for visualizing software artifacts as tag clouds | |
CN109923538A (zh) | 文本检索装置、文本检索方法以及计算机程序 | |
CN111401005B (zh) | 文本转换方法、装置及可读存储介质 | |
CN118523780B (zh) | 一种对sas数据集进行解压以及压缩的方法及应用 | |
Anjos et al. | SJSON: A succinct representation for JavaScript object notation documents | |
CN114117279A (zh) | 网页文件压缩方法及网页文件解压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |