CN114398578A - 用于对html字符串进行预处理的方法及其相关产品 - Google Patents

用于对html字符串进行预处理的方法及其相关产品 Download PDF

Info

Publication number
CN114398578A
CN114398578A CN202111589887.9A CN202111589887A CN114398578A CN 114398578 A CN114398578 A CN 114398578A CN 202111589887 A CN202111589887 A CN 202111589887A CN 114398578 A CN114398578 A CN 114398578A
Authority
CN
China
Prior art keywords
filter
html
queue
string
type
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.)
Pending
Application number
CN202111589887.9A
Other languages
English (en)
Inventor
傅云贵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Youdao Information Technology Beijing Co Ltd
Original Assignee
Netease Youdao Information Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Youdao Information Technology Beijing Co Ltd filed Critical Netease Youdao Information Technology Beijing Co Ltd
Priority to CN202111589887.9A priority Critical patent/CN114398578A/zh
Publication of CN114398578A publication Critical patent/CN114398578A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明的实施方式提供了一种用于对超文本标记语言HTML字符串进行预处理的方法及相关产品。该方法包括:响应于对HTML字符串的处理需求,确定对过滤器的调用策略,其中所述过滤器包括支持对所述HTML字符串进行预处理的第一类过滤器和/或第二类过滤器;根据所述调用策略,注册相应的过滤器;以及调用经注册的过滤器对所述HTML字符串进行预处理。根据本发明的方案可以综合相应过滤器的优势提高对HTML字符串的预处理效率,使得预处理效果更贴合实际需求。

Description

用于对HTML字符串进行预处理的方法及其相关产品
技术领域
本发明的实施方式涉及互联网技术领域,更具体地,本发明的实施方式涉及用于对HTML字符串进行预处理的方法、用于执行前述方法的设备和计算机可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
在某些场景中(例如题库组卷),数据是以超文本标记语言(Hyper Text MarkupLanguage,HTML)字符串的形式在数据库中存储。在实际应用过程中,浏览器端通过后台接口获取数据库中的HTML字符串后,需要调用DOM API将HTML字符串更新到网页中,以便用户观看内容。这一过程中,若存储的HTML字符串数据完全符合业务需求,则不必做任何修改,直接挂载到网页上即可。若存储的HTML字符串数据不能完全符合业务需求,可能需要对HTML内容进行修改,以便提供更好的内容或展示供用户观看。
目前,涉及对HTML字符串的修改主要有两种方式。例如,可以先将HTML字符串更新到网页,此时HTML字符串已经被解析为DOM树并挂载到网页,然后对生成的DOM树进行修改。这种修改方式由于是在HTML内容挂载至网页之后进行修改,因此可能会导致网页回流或重绘,并且其性能也比较差,也容易导致页面闪动,从而影响用户体验。
又例如,还可以先修改HTML字符串,然后再将修改后的HTML内容挂载到网页。这种修改方式由于是在HTML内容挂载至网页之前进行修改,因此修改过程中一般不会导致页面回流或重绘。另外,还具有更好的性能,也不容易导致页面闪动,具有更好的用户体验。
基于此,目前多采用第二种方式来实现HTML字符串的修改(也即预处理)。具体在对HTML字符串修改过程中,仅使用单一方式进行预处理。例如,可以使用JavaScript语言中正则表达式的方式或者修改DOM节点的方式中的任一方式进行预处理。其中,正则表达式的方式虽然性能好,但仅适用于一些简单修改。即便为了完成预期的目的,也可以书写更复杂的正则表达式或者对字符串做多次处理,但这样的方式通用性差,也会导致工程项目的开发成本高以及可维护性差。而修改DOM节点的方式虽然能够适用于较为复杂的修改,但其耗时较长且性能较差。可以看出,目前对HTML字符串的预处理效果仍然不理想,无法满足实际需求。
发明内容
已知的对HTML字符串的预处理效果不理想,这是非常令人烦恼的过程。
为此,非常需要一种改进的用于对超文本标记语言HTML字符串进行预处理的方法及其相关产品,可以根据处理需求选用相应的过滤器,以综合相应过滤器的优势提高处理效率,使得预处理效果更贴合实际需求。
在本上下文中,本发明的实施方式期望提供一种用于对超文本标记语言HTML字符串进行预处理的方法及其相关产品。
在本发明实施方式的第一方面中,提供了一种用于对超文本标记语言HTML字符串进行预处理的方法,包括:响应于对HTML字符串的处理需求,确定对过滤器的调用策略,其中所述过滤器包括支持对所述HTML字符串进行预处理的第一类过滤器和/或第二类过滤器;根据所述调用策略,注册相应的过滤器;以及调用经注册的过滤器对所述HTML字符串进行预处理。
在本发明的一个实施例中,确定对过滤器的调用策略包括:确定待调用的过滤器队列及其调用顺序;以及确定每个过滤器队列中包括的过滤器及其调用顺序。
在本发明的另一个实施例中,根据所述调用策略,注册相应的过滤器包括:根据所述过滤器队列的调用顺序,注册相应的过滤器队列;以及根据所述过滤器的类型及所述过滤器的调用顺序,将所述过滤器添加至相应的过滤器队列中。
在本发明的又一个实施例中,其中所述过滤器队列包括第一类过滤器队列,所述第一类过滤器队列包括一个或多个第一类过滤器,其中调用所述第一类过滤器队列中的过滤器对所述HTML字符串进行预处理包括:按照每个所述第一类过滤器的调用顺序依次运行每个所述第一类过滤器执行预处理操作,其中在所述第一类过滤器队列中,上一所述第一类过滤器的输出作为下一所述第一类过滤器的输入。
在本发明的再一个实施例中,其中所述过滤器队列包括第二类过滤器队列,所述第二类过滤器队列包括一个或多个第二类过滤器,其中调用所述第二类过滤器队列中的过滤器对所述HTML字符串进行预处理包括:获取关于所述HTML字符串的待处理DOM树;以及按照每个所述第二类过滤器的调用顺序,依次运行每个所述第二类过滤器执行对所述待处理DOM树的预处理操作,其中在所述第二类过滤器队列中,上一所述第二类过滤器的输出作为下一所述第二类过滤器的输入。
在本发明的一个实施例中,其中获取关于所述HTML字符串的待处理DOM树包括:对所述HTML字符串或经所述第一类过滤器队列中过滤器处理后的HTML字符串进行解析,以得到所述待处理DOM树。
在本发明的另一个实施例中,其中所述方法还包括:根据每个过滤器的运行时间确定待优化的过滤器;以及执行对所述待优化的过滤器的优化操作。
在本发明的又一个实施例中,其中根据每个过滤器的运行时间确定待优化的过滤器包括:统计每个过滤器在预处理过程中的运行时间;计算每个过滤器相对所有过滤器的运行时间占比;以及将运行时间占比大于阈值的过滤器确定为所述待优化的过滤器。
在本发明实施方式的第二方面中,提供了一种设备,包括:处理器;以及存储器,其存储有用于对HTML字符串进行预处理的计算机指令,当所述计算机指令由所述处理器运行时,使得所述设备执行根据前文以及下文多个实施例所述的方法。
在本发明实施方式的第三方面中,提供了一种计算机可读存储介质,包含用于对HTML字符串进行预处理的程序指令,当所述程序指令由处理器执行时,使得所述设备执行根据前文以及下文多个实施例所述的方法。
根据本发明实施方式的用于对HTML字符串进行预处理的方法及其相关产品,可以调用依据调用策略所注册的过滤器对HTML字符串进行预处理,从而能够综合相应过滤器的优势提高处理效率,使得预处理效果更贴合实际需求。另外,对过滤器的调用策略可以根据处理需求调整,使得过滤器可以根据处理需求进行组合和复用,以满足不同处理需求,具有很好的通用性。此外,在本发明的一些实施例中,还可以监督每个过滤器的运行时间,以便优化HTML字符串的预处理速度。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了适于实现本发明实施方式的示例性计算***100的框图;
图2示意性地示出了根据本发明一个实施例的用于对超文本标记语言HTML字符串进行预处理的方法流程图;
图3示意性地示出了根据本发明另一个实施例的用于对超文本标记语言HTML字符串进行预处理的方法流程图;
图4示意性地示出了根据本发明又一个实施例的用于对超文本标记语言HTML字符串进行预处理的方法流程图;以及
图5示意性地示出了根据本发明实施例的设备的示意框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于实现本发明实施方式的示例性计算***100的框图。如图1所示,计算***100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存储器(ROM)103、***总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。这些设备中,与***总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
本领域技术技术人员知道,本发明的实施方式可以实现为一种***、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”“单元”或“***”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法的流程图和设备(或***)的框图描述本发明的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
根据本发明的实施方式,提出了一种用于对超文本标记语言HTML字符串进行预处理的方法及其相关产品。
在本文中,需要理解的是,所涉及的过滤器可以理解为用来描述对字符串或DOM节点的处理过程。一般来说,过滤器可以通过JavaScript函数或者其他函数来实现,并且可以保持功能单一,以便复用。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,相关技术在对HTML字符串进行预处理过程中,不仅处理方式单一,且处理效果不理想。具体地,可以使用JavaScript语言中的正则表达式进行处理。例如,需要将HTML字符串htmlString中的「abc」全部替换为「xyz」时,可以使用正则表达式进行如下处理:htmlString.replace(/abc/g,‘xyz’)。然而这种方式仅局限于简单修改,比较难以应对复杂场景。例如,对于HTML字符串「<a href=’https://www.example.com/abc.html’>hello,abc</a>」,若只想修改HTML标签的内容部分(即将「hello,abc」中「abc」替换为「xyz」)。若简单使用正则表达式进行替换:htmlString.replace(/abc/g,‘xyz’),那么「<a/>」标签的「href」属性值「https://www.example.com/abc.html」也会被修改。这显然不符合预期效果,若为了完成预期效果,采用书写更复杂的正则表达式或者对字符串做多次处理,不仅会造成通用性差,而且也会导致工程项目的开发成本高以及可维护性差。
为此,相关技术还提出了可以使用修改DOM节点的方式。具体地,可以通过innerHTML将HTML字符串赋值给某个DOM节点,而HTML字符串会被浏览器解析为DOM树。然后,通过遍历DOM树或其他方式,对DOM节点进行修改即可。例如,对于HTML字符串「<a href=’https://www.example.com/abc.html’>hello,abc</a>」,若只想修改HTML标签的内容部分(即将「hello,abc」中「abc」替换为「xyz」)。此时,可以创建临时DOM节点tempNode,接着通过innerHTML将HTML字符串挂载到tempNode上。然后以tempNode为根节点,对DOM树进行遍历(具体若遇到文本节点,则获取其文本内容text,并使用正则表达式或其他方法对text进行修改,以及将修改后的文本内容更新到该文本节点)。最后,在遍历完成后,可以通过innerHTML获取tempNode上的HTML字符串(即被按照要求修改后的字符串)。这种修改DOM节点方式虽然能够适应复杂修改场景,但其涉及的上述处理过程耗时较长。特别是需要对HTML字符串生成的DOM树进行多次且较为复杂的修改时,耗时较多的环节很容易成为性能瓶颈。
基于此,发明人发现可以将对HTML字符串和DOM节点的各种处理过程封装成过滤器,然后基于实际处理需求来组合相应功能的过滤器,以综合不同过滤器的优势提高处理效率,使得预处理效果更贴合实际需求。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
示例性方法
下面参考图2来描述根据本发明示例性实施方式的用于对超文本标记语言HTML字符串进行预处理的方法。需要注意的是,本发明的实施方式可以应用于适用的任何场景。
图2示意性地示出了根据本发明一个实施例的用于对超文本标记语言HTML字符串进行预处理的方法200流程图。如图2所示,方法200可以包括:在步骤S201处,可以响应于对HTML字符串的处理需求,确定对过滤器的调用策略。前述的处理需求可以根据具体设计需求和应用场景进行设置和调整。这里的调用策略具体可以根据处理需求进行调整,使得过滤器可以根据处理需求进行组合和复用以满足不同处理需求。而前述的过滤器可以理解为是用于描述对字符串或DOM节点的处理过程,具体是对处理过程的一种封装。在一些实施例中,前述的过滤器可以包括第一类过滤器和/或第二类过滤器。可以理解的是,第一类过滤器和第二类过滤器可以具有不同功能,而不同类过滤器的内部可以涉及相同的处理技术(例如可以使用正则表达式修改文本内容)。本发明的方案并不对过滤器的具体实现形式进行限制。例如,可以通过JavaScript函数或者其他函数来实现。
在实际应用过程中,不同处理需求适用不同类型的过滤器。例如,对一些简单的替换处理需求,可以使用第一类过滤器。对一些需要精准定位处理的处理需求,可以使用第二类过滤器。而对一些更为复杂的处理需求,则可同时使用第一类过滤器和第二类过滤器。
接着,在步骤S202处,可以根据前述的调用策略,注册相应的过滤器。调用策略决定了需要调用哪些过滤器对HTML字符串进行预处理,因此在此步骤中可以对调用策略所确定的过滤器进行注册,以方便后续调用。
接着,在步骤S203处,可以调用经注册的过滤器对前述的HTML字符串进行预处理。基于此,本发明的方案可以调用依据调用策略所注册的过滤器对HTML字符串进行预处理,从而能够综合相应过滤器的优势提高处理效率,使得预处理效果更贴合实际需求。同时,可依据处理需求确定调整策略,使得过滤器可以根据处理需求进行组合和复用,以满足不同处理需求,增强了本发明方案的通用性。
图3示意性地示出了根据本发明另一个实施例的用于对超文本标记语言HTML字符串进行预处理的方法300流程图。需要说明的是,图3中方法300可以理解为是对图2中方法200的进一步限定和拓展。因此,前文结合图2的各种细节性描述同样也适用于下文。
如图3所示,在步骤S301处,响应于对HTML字符串的处理需求,可以确定待调用的过滤器队列及其调用顺序,以及确定每个过滤器队列中包括的过滤器及其调用顺序。可以理解的是,前述的调用策略可以涉及待调用的队列、队列的调用顺序、队列中的过滤器以及过滤器的调用顺序等信息。需要说明的是,这里对调用策略的描述仅是示例性说明,本发明的方案并不受此限制。
接着,在步骤S302处,可以根据调用策略来注册相应的过滤器。例如,可以根据前述过滤器队列的调用顺序来注册相应的过滤器队列,以及可以根据过滤器的类型及过滤器的调用顺序,将过滤器添加至相应的过滤器队列中。由此,通过对过滤器的注册操作以形成对其的合理化布局,能够最大程度上地整合各个过滤器的优势。
接着,在步骤S303处,可以调用经注册的过滤器对HTML字符串进行预处理。在一些实施例中,前述的过滤器队列可以包括第一类过滤器,并且第一类过滤器队列包括一个或多个第一类过滤器。此时,前述的预处理操作,具体可以按照每个第一类过滤器的调用顺序依次运行每个第一类过滤器执行预处理操作。其中在第一类过滤器队列中,上一第一类过滤器的输出可以作为下一第一类过滤器的输入。
在另一些实施例中,前述的过滤器队列可以包括第二类过滤器队列,并且第二类过滤器队列包括一个或多个第二类过滤器。此时,前述的预处理操作,具体可以获取关于HTML字符串的待处理DOM树。接着,可以按照每个第二类过滤器的调用顺序,依次运行每个第二类过滤器执行对待处理DOM树的预处理操作。其中在第二类过滤器队列中,上一第二类过滤器的输出可以作为下一第二类过滤器的输入。
在又一些实施例中,前述的过滤器队列还可以包括第一类过滤器队列和第二类过滤器队列,且第一类过滤器队列包括一个或多个第一类过滤器,第二类过滤器队列包括一个或多个第二类过滤器。此时,前述的预处理操作,具体可以根据各个队列的调用顺序来依次调用相应队列中的过滤器进行处理。例如,可以先调用第一类过滤器队列中过滤器进行处理,然后调用第二过滤器队列中过滤器继续对将经第一类过滤器队列处理后的HTML字符串进行处理。需要说明的是,这里对预处理过程的细节性描述仅是示例性说明,本发明的方案并不受此限制。
进一步地,在一些实施例中,在执行前述的预处理过程中,还可以根据每个过滤器的运行时间来确定待优化的过滤器,以及执行对该待优化的过滤器的优化操作。其中,确定待优化的过滤器的方式可以有多种。例如,可以统计每个过滤器在预处理过程中的运行时间。具体地,可以在过滤器运行前获取当前时间startTime。以及在过滤器运行结束后,可以获取当前时间endTime。最后,计算endTime与startTime的差值即为该过滤器的运行时间T。
在完成每个过滤器的运行时间统计后,可以计算每个过滤器相对所有过滤器的运行时间占比。例如,可以计算所有过滤器的运行时间S=T1+T2+...+Tn,其中T1、T2、Tn表示单个过滤器的运行时间。而每个过滤器的运行时间占比可以表示为T1/S、T2/S、...、Tn/S。然后,将运行时间占比大于阈值的过滤器确定为前述待优化的过滤器,其中前述的阈值可以根据实际需求进行设置和调整。基于此,可以监控每个过滤器的消耗时间,以便减少消耗时间较多的环节,从而优化HTML字符串的预处理速度。需要说明的是,这里对待优化的过滤器的确定方式的描述仅是示例性说明,本发明的方案并不受此限制。
图4示意性地示出了根据本发明又一个实施例的用于对超文本标记语言HTML字符串进行预处理的方法400流程图。可以理解的是,图4可以是前文结合图2和图3所描述的相关步骤的一种示例性的实现方式。例如,图4将以第一类过滤器可以为字符串过滤器、第二类过滤器可以为DOM节点过滤器为例进行说明。因此,前文结合图2和图3中对各个步骤的细节性描述同样适用于下文。
其中,字符串过滤器的输入为待处理的HTML字符串,可以对HTML字符串进行修改并输出处理后的HTML字符串,以及可以使用正则表达式或其他方式修改文本内容。而DOM节点过滤器的输入为DOM节点,可以对DOM节点进行修改或有选择的复制且输出修改后或复制后的DOM节点。以及在DOM节点过滤器内部可以执行删除、修改以及增加某个DOM节点的操作或也可以使用正则表达式对文本内容进行修改。
在一些实施例中,可以通过过滤器管理模块实现过滤器的管理。具体地,过滤器管理模块可以设置前置字符串过滤器及其队列、DOM节点过滤器及其队列、后置字符串过滤器及其队列等角色和运行时间表等角色。其中,前置字符串过滤器是指在DOM节点过滤器运行之前运行的字符串过滤器。而后置字符串过滤器是指在DOM节点过滤器运行之后运行的字符串过滤器。运行时间表可以记录每个过滤器的运行时间,以便优化过滤器的处理速度。
利用上述角色可以实现对HTML字符串的预处理。具体地,如图4所示,在步骤S401处,可以注册过滤器。例如,在运行过滤器之前,前置字符串过滤器、DOM节点过滤器、后置字符串过滤器都需要在过滤器管理模块进行注册。执行注册操作可以将过滤器添加到相应的队列,并进行排序管理。由此,可以确定同类过滤器的运行先后顺序。另外,根据处理需求,同功能的过滤器可以在同一队列中多次出现,或者仅出现一次。
接着,在步骤S402处,可以对给定的HTML字符串运行所有过滤器,以得到修改后的HTML字符串或DOM节点。
在一些实施例中,可以先运行前置字符串过滤器。具体地,可以按照前置字符串过滤器队列中过滤器的顺序,依次运行过滤器对HTML字符串进行修改,并在过滤器运行完毕后,输出修改后的HTML字符串。在处理过程中,上一个过滤器输出的HTML字符串可以作为下一个过滤器的输入,直至所有前置字符串过滤器运行完毕,得到被所有前置字符串过滤器修改的HTML字符串。
接着,可以运行DOM节点过滤器。具体地,若DOM节点过滤器队列中无过滤器,则直接运行后置字符串过滤器。若DOM节点过滤器队列中有过滤器,可以依次执行准备工作、运行DOM节点过滤器以及获取修改结果操作。具体地,在执行准备工作阶段,可以将S401步骤输出的HTML字符串解析为DOM树,以得到DOM树根节点。例如,可以调用不同DOM API将HTML字符串解析为DOM树,也可以采用创建临时DOM节点的方式或其他方式来获取DOM树。需要说明的是,仅需在准备工作阶段执行一次将HTML字符串解析为DOM树的操作,即可运行完该DOM节点过滤器队列下的所有过滤器。
在运行DOM节点过滤器阶段,可以按照DOM节点过滤器队列中过滤器的顺序,依次运行过滤器对DOM树进行修改,并在过滤器运行完毕后,输出修改后的DOM树。在处理过程中,上一个过滤器输出的DOM树可以作为下一个过滤器的输入,直至所有DOM节点过滤器运行完毕,得到被修改后的DOM树。而在获取修改结果过程中,若最终结果为DOM节点,可以直接运行后置字符串过滤器。若最终结果为HTML字符串,可使用DOM相关的API(比如innerHTML/outerHTML)从DOM树根节点上获取修改后的HTML字符串,然后运行后置字符串过滤器。
最后,可以运行后置字符串过滤器。具体地,若上一步输出的是DOM节点,则不运行后置字符串过滤器,且上一步输出的DOM节点即最终结果。若上一步输出的是HTML字符串,则运行后置字符串过滤器。例如,可以按照后置字符串过滤器队列中过滤器的顺序,依次运行过滤器对上一步输出的HTML字符串进行修改,以及过滤器运行完毕后,输出修改后的HTML字符串。在处理过程中,上一个过滤器输出的HTML字符串可以作为下一个过滤器的输入,直至所有后置字符串过滤器运行完毕。此时,得到的字符串即为最终结果。
在运行所有过滤器过程中,可以执行步骤S403,以通过运行时间表记录每个过滤器的运行时间。具体地,在步骤S402中各个过滤器运行过程中,运行时间表可以记录每个过滤器的开始运行时间和结束运行时间,并根据开始运行时间和结束运行时间的差值确定每个过滤器的运行时间。然后计算每个过滤器的运行时间占比,对于运行时间占比较大的过滤器可着重优化,以尽量减少消耗时间较多的环节。
基于此,本发明的方案可以根据处理需求运行相应的过滤器对HTML字符串进行预处理,从而能够综合各个过滤器的优势提高处理效率。具体地,过滤器管理模块在运作DOM节点过滤器时,通过准备工作能保证HTML字符串解析为DOM树仅需要一次,并且能监控过滤器的运行时间以便提供优化机制。另外,每个过滤器可以保持较为单一的功能,其实现也较为简单,且在一些复杂应用场景下,过滤可以自由组合被不同过滤器管理模块复用。需要说明的是,图4对可设置的角色的描述仅是示例性说明,本发明的方案并不对此进行限制。例如,还可以仅设置DOM节点过滤器队列和字符串过滤器队列,或者可以设置字符串过滤器队列A、DOM节点过滤器队列B、字符串过滤器队列C、DOM节点过滤器队列D以及字符串过滤器队列E等,具体可以根据处理需求进行调整。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图5对本发明示例性实施方式的用于对超文本标记语言HTML字符串进行预处理的相关产品进行描述。
图5示意性地示出了根据本发明实施例的设备500的示意框图。如图5所示,设备500可以包括处理器501和存储器502。其中存储器502存储有用于对超文本标记语言HTML字符串进行预处理的计算机指令,当所述计算机指令由处理器501运行时,使得设备500执行根据前文结合图2~图4所描述的方法。例如,在一些实施例中,设备500可以执行对调用策略的确定、对过滤器的注册、对过滤器的调用等。基于此,通过设备500可以以较低的开发成本实现对HTML字符串的高效预处理。
在一些实施场景中,设备500可以包括终端设备(例如个人PC机、电脑、手机、助学设备以及其他能够支持网页浏览的设备等)。
应当注意,尽管在上文详细描述中提及了用于对超文本标记语言HTML字符串进行预处理的设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。

Claims (10)

1.一种用于对超文本标记语言HTML字符串进行预处理的方法,其特征在于,包括:
响应于对HTML字符串的处理需求,确定对过滤器的调用策略,其中所述过滤器包括支持对所述HTML字符串进行预处理的第一类过滤器和/或第二类过滤器;
根据所述调用策略,注册相应的过滤器;以及
调用经注册的过滤器对所述HTML字符串进行预处理。
2.根据权利要求1所述的方法,其特征在于,确定对过滤器的调用策略包括:
确定待调用的过滤器队列及其调用顺序;以及
确定每个过滤器队列中包括的过滤器及其调用顺序。
3.根据权利要求2所述的方法,其特征在于,根据所述调用策略,注册相应的过滤器包括:
根据所述过滤器队列的调用顺序,注册相应的过滤器队列;以及
根据所述过滤器的类型及所述过滤器的调用顺序,将所述过滤器添加至相应的过滤器队列中。
4.根据权利要求3所述的方法,其特征在于,其中所述过滤器队列包括第一类过滤器队列,所述第一类过滤器队列包括一个或多个第一类过滤器,其中调用所述第一类过滤器队列中的过滤器对所述HTML字符串进行预处理包括:
按照每个所述第一类过滤器的调用顺序依次运行每个所述第一类过滤器执行预处理操作,其中在所述第一类过滤器队列中,上一所述第一类过滤器的输出作为下一所述第一类过滤器的输入。
5.根据权利要求3或4所述的方法,其特征在于,其中所述过滤器队列包括第二类过滤器队列,所述第二类过滤器队列包括一个或多个第二类过滤器,其中调用所述第二类过滤器队列中的过滤器对所述HTML字符串进行预处理包括:
获取关于所述HTML字符串的待处理DOM树;以及
按照每个所述第二类过滤器的调用顺序,依次运行每个所述第二类过滤器执行对所述待处理DOM树的预处理操作,其中在所述第二类过滤器队列中,上一所述第二类过滤器的输出作为下一所述第二类过滤器的输入。
6.根据权利要求5所述的方法,其特征在于,其中获取关于所述HTML字符串的待处理DOM树包括:
对所述HTML字符串或经所述第一类过滤器队列中过滤器处理后的HTML字符串进行解析,以得到所述待处理DOM树。
7.根据权利要求1所述的方法,其特征在于,其中所述方法还包括:
根据每个过滤器的运行时间确定待优化的过滤器;以及
执行对所述待优化的过滤器的优化操作。
8.根据权利要求7所述的方法,其特征在于,其中根据每个过滤器的运行时间确定待优化的过滤器包括:
统计每个过滤器在预处理过程中的运行时间;
计算每个过滤器相对所有过滤器的运行时间占比;以及
将运行时间占比大于阈值的过滤器确定为所述待优化的过滤器。
9.一种设备,其特征在于,包括:
处理器;以及
存储器,其存储有用于对HTML字符串进行预处理的计算机指令,当所述计算机指令由所述处理器运行时,使得所述设备执行根据权利要求1-8的任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包含用于对HTML字符串进行预处理的程序指令,当所述程序指令由处理器执行时,使得实现根据权利要求1-8的任意一项所述的方法。
CN202111589887.9A 2021-12-23 2021-12-23 用于对html字符串进行预处理的方法及其相关产品 Pending CN114398578A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111589887.9A CN114398578A (zh) 2021-12-23 2021-12-23 用于对html字符串进行预处理的方法及其相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111589887.9A CN114398578A (zh) 2021-12-23 2021-12-23 用于对html字符串进行预处理的方法及其相关产品

Publications (1)

Publication Number Publication Date
CN114398578A true CN114398578A (zh) 2022-04-26

Family

ID=81227453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111589887.9A Pending CN114398578A (zh) 2021-12-23 2021-12-23 用于对html字符串进行预处理的方法及其相关产品

Country Status (1)

Country Link
CN (1) CN114398578A (zh)

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024415B1 (en) * 2002-07-31 2006-04-04 Bellsouth Intellectual Property Corporation File conversion
US20070156871A1 (en) * 2005-12-30 2007-07-05 Michael Braun Secure dynamic HTML pages
CN101192217A (zh) * 2006-11-28 2008-06-04 阿里巴巴公司 消除超文本标记语言中有害代码的方法
US20090276506A1 (en) * 2008-05-02 2009-11-05 Yahoo! Inc. Generating document templates that are robust to structural variations
US20120005211A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Document object model (dom) based page uniqueness detection
US20150193402A1 (en) * 2014-01-09 2015-07-09 International Business Machines Corporation Tracking javascript actions
CN104850609A (zh) * 2015-05-08 2015-08-19 湖北光谷天下传媒股份有限公司 一种针对跳字类关键词的过滤方法
CN105302876A (zh) * 2015-09-28 2016-02-03 孙燕群 基于正则表达式的url过滤方法
CN107590219A (zh) * 2017-09-04 2018-01-16 电子科技大学 网页人物主题相关信息提取方法
CN108287697A (zh) * 2016-12-30 2018-07-17 广州华多网络科技有限公司 一种html转义字符替换方法、装置及终端
CN108881101A (zh) * 2017-05-08 2018-11-23 腾讯科技(深圳)有限公司 一种基于文档对象模型的跨站脚本漏洞防御方法、装置以及客户端
CN109522018A (zh) * 2018-11-14 2019-03-26 腾讯科技(深圳)有限公司 页面处理方法、装置及存储介质
CN110427773A (zh) * 2019-06-28 2019-11-08 平安科技(深圳)有限公司 信息处理方法、装置、存储介质及终端设备
CN111274760A (zh) * 2020-01-09 2020-06-12 北京字节跳动网络技术有限公司 富文本数据处理方法、装置、电子设备及计算机存储介质
CN111913705A (zh) * 2020-05-28 2020-11-10 中南大学 一种基于差异更新算法的JavaScript模板实现方法
CN112069775A (zh) * 2020-08-21 2020-12-11 完美世界控股集团有限公司 数据的转换方法及装置、存储介质、电子装置
CN113010471A (zh) * 2019-12-19 2021-06-22 京东安联财产保险有限公司 文件转换方法、文件转换装置、存储介质及电子设备

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024415B1 (en) * 2002-07-31 2006-04-04 Bellsouth Intellectual Property Corporation File conversion
US20070156871A1 (en) * 2005-12-30 2007-07-05 Michael Braun Secure dynamic HTML pages
CN101192217A (zh) * 2006-11-28 2008-06-04 阿里巴巴公司 消除超文本标记语言中有害代码的方法
US20090276506A1 (en) * 2008-05-02 2009-11-05 Yahoo! Inc. Generating document templates that are robust to structural variations
US20120005211A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Document object model (dom) based page uniqueness detection
US20150193402A1 (en) * 2014-01-09 2015-07-09 International Business Machines Corporation Tracking javascript actions
CN104850609A (zh) * 2015-05-08 2015-08-19 湖北光谷天下传媒股份有限公司 一种针对跳字类关键词的过滤方法
CN105302876A (zh) * 2015-09-28 2016-02-03 孙燕群 基于正则表达式的url过滤方法
CN108287697A (zh) * 2016-12-30 2018-07-17 广州华多网络科技有限公司 一种html转义字符替换方法、装置及终端
CN108881101A (zh) * 2017-05-08 2018-11-23 腾讯科技(深圳)有限公司 一种基于文档对象模型的跨站脚本漏洞防御方法、装置以及客户端
CN107590219A (zh) * 2017-09-04 2018-01-16 电子科技大学 网页人物主题相关信息提取方法
CN109522018A (zh) * 2018-11-14 2019-03-26 腾讯科技(深圳)有限公司 页面处理方法、装置及存储介质
CN110427773A (zh) * 2019-06-28 2019-11-08 平安科技(深圳)有限公司 信息处理方法、装置、存储介质及终端设备
CN113010471A (zh) * 2019-12-19 2021-06-22 京东安联财产保险有限公司 文件转换方法、文件转换装置、存储介质及电子设备
CN111274760A (zh) * 2020-01-09 2020-06-12 北京字节跳动网络技术有限公司 富文本数据处理方法、装置、电子设备及计算机存储介质
CN111913705A (zh) * 2020-05-28 2020-11-10 中南大学 一种基于差异更新算法的JavaScript模板实现方法
CN112069775A (zh) * 2020-08-21 2020-12-11 完美世界控股集团有限公司 数据的转换方法及装置、存储介质、电子装置

Similar Documents

Publication Publication Date Title
US9619913B2 (en) Animation editing
US9069574B2 (en) Code analysis for simulation efficiency improvement
CN106909361B (zh) 基于模版引擎的web开发方法和装置
US11677809B2 (en) Methods for transforming a server side template into a client side template and devices thereof
US8539442B2 (en) Reverse engineering for code file refactorization and conversion
US20190065164A1 (en) Computer speed via metadata-based business rule interpreter
CN114996619A (zh) 一种页面显示的方法、装置、计算机设备及存储介质
CN111078217A (zh) 脑图生成方法、装置和计算机可读存储介质
CN108073401B (zh) 一种业务逻辑的执行方法、装置及电子设备
CN110058849A (zh) 流程图的生成方法、装置、计算机设备以及存储介质
US20140359429A1 (en) Method, computer program, and system for rearranging a server response
US20110131552A1 (en) Augmenting visualization of a call stack
KR20200103133A (ko) 하둡 기반의 빅데이터 시스템에서 etl 절차를 수행하는 방법 및 장치
Stamey et al. The aspect-oriented web
CN113642295B (zh) 页面排版方法、装置及计算机程序产品
CN114398578A (zh) 用于对html字符串进行预处理的方法及其相关产品
CN113138767B (zh) 代码语言转换方法、装置、电子设备及存储介质
CN111241538B (zh) 一种保护节点对象变量的方法、装置、介质和电子设备
US20140089207A1 (en) System and method for providing high level view tracking of changes in sca artifacts
CN113986322B (zh) 一种动态修改页面代码的方法、装置及存储介质
CN115563183B (zh) 查询方法、装置及程序产品
CN113031962B (zh) 编译方法、编译装置、电子设备、存储介质和程序产品
US11960560B1 (en) Methods for analyzing recurring accessibility issues with dynamic web site behavior and devices thereof
CN115964024A (zh) 一种组件处理方法、调用方法、装置、设备及存储介质
CN114661976A (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