CN110020292B - 网页内容提取方法以及终端设备 - Google Patents

网页内容提取方法以及终端设备 Download PDF

Info

Publication number
CN110020292B
CN110020292B CN201710953935.5A CN201710953935A CN110020292B CN 110020292 B CN110020292 B CN 110020292B CN 201710953935 A CN201710953935 A CN 201710953935A CN 110020292 B CN110020292 B CN 110020292B
Authority
CN
China
Prior art keywords
webpage
web page
content
display component
module
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
Application number
CN201710953935.5A
Other languages
English (en)
Other versions
CN110020292A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710953935.5A priority Critical patent/CN110020292B/zh
Priority to PCT/CN2018/109757 priority patent/WO2019072201A1/zh
Priority to KR1020207008858A priority patent/KR102436987B1/ko
Priority to EP18866989.9A priority patent/EP3667520A4/en
Publication of CN110020292A publication Critical patent/CN110020292A/zh
Priority to US16/847,168 priority patent/US11403364B2/en
Application granted granted Critical
Publication of CN110020292B publication Critical patent/CN110020292B/zh
Priority to US17/849,192 priority patent/US20220318336A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • 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/93Document management systems
    • 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/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • 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/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • 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/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system

Abstract

本申请实施例提供一种终端设备中的网页内容提取方法,该方法通过操作系统框架中的系统服务驱动网页显示组件执行环境完成应用程序用户界面中控件的布局和渲染,并从用户界面包含的视图控件中识别出网页显示组件,然后通过识别出的网页显示组件的接口向应用程序用户界面中嵌入的网页中注入内容提取模块和信息反馈模块,内容提取模块基于自定义网页事件驱动,提取网页中指定位置处的内容,信息反馈模块将提取的网页内容传送至操作系统,操作系统可进一步基于提取的网页内容进行数据挖掘、内容推送或者服务推荐等,使用户获得智慧化的体验。

Description

网页内容提取方法以及终端设备
技术领域
本申请涉及计算机领域,更为具体地,涉及一种从终端设备的用户界面中内嵌的网页中提取指定位置处的内容的方法、及终端设备。
背景技术
以智能手机为代表的终端设备,通过种类丰富的应用程序(简称为“应用”)为人们提供各种各样的服务,日益成为人们日常生活中不可或缺的重要工具,而用户界面则是应用与用户之间进行交互和信息交换的媒介。目前,终端设备上越来越多的应用属于混合应用(hybrid application),这一类应用通常在用户界面中内嵌网页(webpage)来向用户展示信息。使用超文本标记语言(hyper text markup language,HTML),层叠样式表(cascading style sheets,CSS)等编程语言编写的网页代码经过浏览器或网页显示组件加载、解析和渲染后,最终呈现为用户可识别的内容,比如图片、文字、视频等等。
可以看出,网页是用户与应用程序交互信息的重要载体,如果终端设备能够准确地提取网页中指定位置的有效内容,可以极大地提高用户在浏览信息时的互动性,并且还可以延伸出很多应用场景,比如可以收集用户点击的位置处的网页内容以分析用户兴趣爱好并建立用户画像,进而进行内容推送、服务推荐、情景对话等各种智能业务。因此,准确高效地提取终端设备上的网页的内容,具有很大的技术价值。
但是,随着应用的数量和种类的不断增长,带来了终端设备碎片化的问题,这意味着终端设备中可能会存在多种不同的网页显示组件,且不同的应用可能使用不同的网页显示组件来加载和显示网页。例如,系统内置的应用通常使用操作系统自带的浏览器或网页显示组件来显示网页,而有些第三方应用则使用私有的网页显示组件来显示网页。目前,终端设备的操作系统只能提取使用系统自带网页显示组件的应用的网页内容,即只能支持部分应用的网页内容提取,而对于一些使用私有网页显示组件的第三方混合应用,或者新的应用,则无法提取其界面中嵌入的网页的内容。因此,目前的网页内容提取技术很大程度上受限于应用的类型或者应用所使用的网页显示组件的类型,导致终端设备的操作系统无法准确地提取各种类型的应用的网页内容,从而使得基于网页内容提取的业务的应用场景受到很大限制。
发明内容
本申请提供一种能兼容多种应用的网页内容提取方法,以及用于实施该内容提取方法的终端设备,以从应用程序的用户界面内嵌的网页中,准确提取指定位置处的内容。
第一方面,本申请实施例提供一种终端设备中的网页内容提取方法,包括:该终端设备的操作系统识别应用程序的网页显示组件,该网页显示组件被所述应用程序用于加载和显示用户界面中包含的网页;所述操作系统通过调用所述网页显示组件的接口以向所述网页注入内容提取模块和信息反馈模块;所述内容提取模块根据所述网页显示组件派发的网页事件,从所述网页中提取第一网页坐标对应的内容,所述网页事件包含所述第一网页坐标;所述信息反馈模块将所述内容提取模块提取的所述内容传送给所述操作系统。通过上述技术方案,可从操作系统层面统一识别各种不同应用程序的网页显示组件,进而通过网页显示组件的接口向网页中动态注入内容提取模块以提取网页内容,解决了由于终端设备碎片化问题导致的无法对所有类型应用的页面内容进行提取的问题,能兼容各种不同类型的应用程序,保证对于各种类型的应用程序的界面中内嵌的网页内容均能准确提取。
在一种可能的实现方式中,可以根据所述应用程序的用户界面所包含的至少一个控件的特征,识别出与网页显示组件特征模型匹配的控件,所述识别出的控件为所述应用程序的网页显示组件,所述网页显示组件特征模型表征多个网页显示组件的共同特征。该方案通过提取多种网页显示组件的功能特征并建立特征模型,然后根据用户界面中包含的控件的特征,动态识别出与网页显示组件的特征相匹配的控件,不仅解决了对当前所有应用的网页显示组件的识别问题,也保证了对未来新增应用的网页显示组件的识别。
在一种可能的实现方式中,控件的特征包括:功能特征和行为特征中的至少一种。其中,控件的功能特征包括所述控件的接口功能特征,该接口功能特征用于表征或描述控件的接口的功能;控件的行为特征包括所述控件的渲染特征,该渲染特征用于表征或描述控件执行的渲染操作的特征,渲染操作的特征包括:绘制操作、绘制内容、绘制坐标。
在一种可能的实现方式中,所述识别应用程序的网页显示组件包括:从应用程序的界面所包含的多个视图控件中识别出接口功能特征与网页显示组件的功能模型匹配度最高的视图控件,识别出的该视图控件即为该应用程序的网页显示组件。其中,所述功能模型表征网页显示组件的必要功能,所述必要功能包括:页面加载、页面刷新、历史管理、地址导航中的至少一种。
在一种可能的实现方式中,所述识别应用程序的网页显示组件包括:从应用程序的界面所包含的多个视图控件中识别出渲染特征与渲染模型匹配度最高的视图控件,识别出的该视图控件即为该应用程序的网页显示组件。其中,所述渲染模型表征渲染网页需要完成的绘制操作的特征,所述绘制操作的特征包括:绘制方式、绘制内容、绘制坐标中的至少一种。
在一种可能的实现方式中,所述识别应用程序的网页显示组件包括:根据所述应用程序的标识,从预先配置的第一数据库中查询所述应用程序的网页显示组件的标识,所述第一数据库存储有所述应用程序的标识与所述应用程序的网页显示组件的标识的对应关系;从所述用户界面包含的至少一个控件中,确定标识与所述网页显示组件的标识对应的控件,确定的所述控件为所述应用程序的网页显示组件;其中,所述至少一个控件包括所述应用程序的网页显示组件。该方案通过对离线分析多个应用所使用的网页显示组件,并在数据库中存储应用与网页显示组件的对应关系,这样通过查询该数据库即可快速获知应用程序的网页显示组件,减小了对系统资源的占用。
在一种可能的实现方式中,若根据所述应用程序的标识,从预先配置的第一数据库中未查询到所述应用程序的网页显示组件的标识,则根据所述应用程序的用户界面所包含的至少一个控件的特征,识别出与网页显示组件特征模型匹配的控件,并将所述应用程序的网页显示组件的标识与所述应用程序的标识之间的对应关系添加到所述第一数据库中,从而实现数据库的动态更新,保证对新的应用程序的网页显示组件的高效识别。
在一种可能的实现方式中,注入所述内容提取模块和所述信息反馈模块的时机与注入策略相关,其中注入策略包括:最优注入策略和次优注入策略;注入策略是在所述应用程序安装时或者所述应用程序的用户界面创建时确定的。其中,最优注入策略表示所述内容提取模块和所述信息反馈模块可以按需注入,即当需要提取用户界面中嵌入的网页的内容时,再注入所述内容提取模块和所述信息反馈模块;次优注入策略表示只有所述内容提取模块可按需注入,而所述信息反馈模块无法按需注入,需要在网页加载之前就注入所述信息反馈模块。
在一种可能的实现方式中,可以根据所述应用程序的标识或者所述网页显示组件的标识,查询预先配置的第二数据库来确定所述网页显示组件对应的注入策略;所述第二数据库存储有至少一个应用程序的标识、至少一个网页显示组件的标识以及所述至少一种注入策略的对应关系。其中,第二数据库与前述第一数据库可以为不同的数据库,也可以为同一数据库。
在一种可能的实现方式中,当注入策略为最优注入策略时,可以在所述应用程序的用户界面显示后,通过调用所述网页显示组件的接口以向所述网页同时注入所述内容提取模块和所述信息反馈模块;当注入策略为次优注入策略时,可以在所述应用程序的用户界面创建时,且所述网页显示组件加载所述用户界面中的网页之前,通过调用所述网页显示组件的接口向所述网页注入所述信息反馈模块。
在一种可能的实现方式中,所述内容提取模块遍历所述网页的DOM树以确定对应于所述第一位置的目标节点,所述目标节点为一段文字,或一张图片;根据所述目标节点的显示属性以及所述目标节点周围的节点的显示属性,同时提取所述目标节点对应的内容以及所述目标节点周围的节点对应的内容。通过该方法,可以识别出网页DOM树中多个节点对应的内容合并显示的情形,从而准确提取出用户真正感兴趣的内容。
在一种可能的实现方式中,若所述目标节点对应的内容中包含的空格字符的数量大于设定阈值,则所述内容提取模块提取所述内容中位于所述空格字符之前的部分内容,或者位于所述空格字符之后的部分内容。通过该方法,可以识别出网页DOM树中的一个节点对应的内容分块显示的情形,从而准确提取出用户真正感兴趣的内容。
在一种可能的实现方式中,若所述目标节点对应的内容中包含的字符的数量大于设定阈值,则所述内容提取模块只提取所述内容中靠近所述第一位置的设定长度的字符。通过该方法,对于网页中的大段落内容,可以针对性提取部分内容,避免大量无效内容的提取,浪费系统资源。
在一种可能的实现方式中,操作系统会派发自定义系统事件以触发所述内容提取模块执行提取操作,该自定义系统事件是基于用户的操作产生的,或者是操作系统模拟的。
在一种可能的实现方式中,所述应用程序的网页显示组件或者所述操作系统的其它组件会将所述自定义系统事件转换为自定义网页事件,当事件监听器监听到该自定义网页事件后触发所述内容提取模块执行提取操作。该自定义的系统事件与操作系统现有的系统事件不冲突;相应地,该自定义网页事件及其处理逻辑与现有的其它类型的网页事件也不冲突,所以不会干扰页面的其它网页事件的派发和处理,同时,内容提取模块只监听这个自定义的网页事件,从而降低整个页面提取流程对页面的影响。
在一种可能的实现方式中,在完成网页内容提取之后,移除所述内容提取模块和所述信息反馈模块。
在一种可能的实现方式中,所述内容提取模块和所述信息反馈模块为通过java脚本(JavaScript,JS)语言实现的JS代码或程序,运行于JS执行环境中。
在一种可能的实现方式中,所述信息反馈模块通过JS Binding机制将提取的所述内容传回所述网页执行环境,所述网页执行环境(page context)通过java本地接口(javanative interface,JNI)的方式将所述内容传送给运行于系统运行时(runtime)的系统服务。
在一种可能的实现方式中,所述应用程序的标识为所述应用程序的安装包的标识,所述网页显示组件的标识为所述网页显示组件的签名信息。
第二方面,本发明实施例提供了一种网页内容提取方法,包括:操作系统确定应用程序的用户界面对应的显示列表(display list),所述显示列表记录有即将要执行的多个绘制操作,所述多个绘制操作用于绘制所述用户界面,所述用户界面中包含网页;其中,每一个绘制操作至少包括绘制内容和绘制坐标;响应于第一事件,从所述显示列表中确定目标绘制操作,所述目标绘制操作的绘制坐标与所述第一事件携带的坐标对应,所述目标绘制操作的绘制内容为所述网页的部分或全部内容;提取所述目标绘制操作的绘制内容。通过该技术方案,解决了在极端场景下,无法识别应用程序的网页显示组件或无法注入内容提取模块和信息反馈模块时提取网页内容的问题。
在一种可能的实现方式中,所述第一事件为自定义系统事件。
在一种可能的实现方式中,所述自定义系统事件是由用户的操作触发的,或者是由所述操作系统模拟的。
在一种可能的实现方式中,所述第一事件携带的坐标为指示所述网页中的第一位置的网页坐标,所述目标绘制操作的绘制坐标与所述网页坐标相同,或所述目标绘制操作的绘制坐标与所述网页坐标的距离在预设范围内。
第三方面,本发明实施例提供了一种网页内容提取方法,包括:应用程序通过网页显示组件加载并显示所述应用程序的用户界面中包含的网页;所述网页显示组件通过接口向所述网页注入内容提取模块和信息反馈模块;所述网页显示组件向所述内容提取模块接收派发第一事件,所述第一事件包含网页坐标,所述网页坐标指示所述网页中的第一位置,以使所述内容提取模块在监听到所述第一事件后从所述网页中提取所述第一位置对应的内容,并通过所述信息反馈模块将提取的所述内容传送至所述应用程序。通过该技术方案,应用程序通过其网页显示组件的接口向当前显示的网页中动态注入内容提取模块和信息反馈模块,以提取网页内容,相比于现有的提取方案,资源开销小,提取的效率更高。
第四方面,本申请实施例提供一种终端设备,包括用于执行上述第一方面至第三方面中任一方面所描述的方法的一个或多个功能单元,这些功能单元可以由软件模块实现,或者由硬件,比如处理器实现,或者由软件结合必要的硬件实现。
第五方面,本申请实施例提供一种终端设备,包括存储器、处理器以及存储在所述存储器上的计算机程序,当所述处理器执行所述计算机程序时实现上述第一方面至第三方面中任一方面所描述的方法的步骤。
第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序(指令),该程序(指令)被处理器执行时实现上述第一方面至第三方面中任一方面所描述的方法的步骤。
在上述任一方面或任一方面的任一种可能的实现方式中,所述内容提取模块和所述信息反馈模块为通过脚本语言实现的代码或程序,被添加到所述网页的源代码中,且该代码或程序被该网页对应的网页运行时解析执行后实现内容提取和信息反馈的功能。其中,所述网页运行时的网页执行环境解析所述网页的源代码之后得到该网页的文档对象模型(document object model,DOM)树,所述内容提取模块和所述信息反馈模块位于到所述网页的DOM树中的head节点下或者body节点下。
在上述任一方面或任一方面的任一种可能的实现方式中,所述内容提取模块和所述信息反馈模块对应的代码或程序被直接注入到所述网页的网页运行时,网页运行时的脚本执行环境执行该代码或程序以实现内容提取和信息反馈的功能。
在上述任一方面或任一方面的任一种可能的实现方式中,所述内容提取模块和所述信息反馈模块对应的代码或程序可以集成在操作系统中,或者也可以预先存储在终端设备的存储器中,所述操作系统或所述网页的网页运行时通过文件系统可以访问和获取该代码或程序,或者所述操作系统或所述网页运行时也可以从网络侧下载获取所述内容提取模块和所述信息反馈模块对应的代码或程序。
本申请通过以上技术方案,在操作系统层面通过统一的内容提取技术实现了从系统内置应用到各种类型的第三方应用的内容的智能提取,准确,高效,低功耗、内存占用少。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1是本申请实施例的应用程序的用户界面示意图。
图2是本申请实施例的终端设备的结构示意图。
图3是本申请实施例的终端设备的逻辑架构示意图。
图4是本申请实施例的网页内容提取方法的流程图。
图5是本申请实施例的识别网页显示组件的流程图。
图6是本申请实施例的文档对象模型(document object model,DOM)树的示意图。
图7是本申请实施例的网页内容提取方法的流程图。
图8是本申请实施例的网页内容提取方法的过程示意图。
图9是本申请另一实施例提供的基于提取的网页内容进行智能服务推荐的示意图。
图10是本申请另一实施例的网页内容提取方法的过程示意图。
图11是本申请另一个实施例提供的终端设备的示意性结构图。
图12是本申请另一实施例提供的终端设备的示意性结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部实施例。
本申请实施例提供的网页内容提取方法用于提取终端设备(terminal device)中的显示的网页中的内容。其中,终端设备指向用户提供语音和/或数据连通性的设备,包括无线终端或有线终端。无线终端可以经无线接入网(radio access network,RAN)与一个或多个核心网进行通信,无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置。本申请的说明书和权利要求书及附图中的术语“用户界面(user interface)”,简称界面,是应用程序或操作系统与用户之间进行交互和信息交换的图形界面,它可以是一个窗口、对话框、显示区域等等。应用程序的用户界面是通过java、可扩展标记语言(extensiblemarkup language,XML)等特定计算机语言编写的源代码,界面源代码在终端设备上经过解析,渲染,最终呈现为用户可以识别的内容,比如图片、文字、按钮等控件。控件(control)也称为部件(widget),是用户界面的基本元素,典型的控件有工具栏(toolbar)、菜单栏(menubar)、文本框(text box)、按钮(button)、滚动条(scrollbar)、图片和文本。界面中的控件的属性和内容是通过标签或者节点来定义的,比如XML通过<Textview>、<ImgView>、<VideoView>等节点来规定界面所包含的控件。一个节点对应界面中一个控件或属性,节点经过解析和渲染之后呈现为用户可视的内容。此外,很多应用程序,比如混合应用(hybridapplication)的界面中通常还包含有网页。网页,也称为页面,可以理解为内嵌在应用程序界面中的一个特殊的控件,网页是通过特定计算机语言编写的源代码,例如超文本标记语言(hyper text markup language,HTML),层叠样式表(cascading style sheets,CSS),java脚本(JavaScript,JS)等,网页源代码可以由浏览器或与浏览器功能类似的网页显示组件加载和显示为用户可识别的内容。网页所包含的具体内容也是通过网页源代码中的标签或者节点来定义的,比如HTML通过<p>、<img>、<video>、<canvas>来定义网页的元素和属性。
图1示出了应用程序的用户界面的示例,如图1所示,应用程序的用户界面3包含有文本框、工具栏、网页标签、按钮等控件以及网页,其中,网页被网页显示组件加载、解析、渲染后显示为用户可识别的内容,比如图片,文本等。应理解的是,除了终端设备以外,本申请实施例提供的网页内容提取方法也可以应用于其他类型的计算机系统。
图2示出了本申请实施例提供的一种终端设备的示例。根据图2,终端设备200包括通信子系统210、电源220、输入设备230、显示设备240、处理单元250、以及存储器260。存储器260存储有计算机程序或指令,该计算机程序包括操作系统294和应用程序292等。处理单元250被配置用于执行存储器260中的计算机程序,从而实现该计算机程序定义的方法,例如处理单元250运行操作系统294从而在终端设备200上实现操作系统的各种功能。
处理单元250可以包括一个或多个处理器,例如,处理单元250可以包括应用处理器、图形处理器、数字信号处理器等。当处理单元250包括多个处理器时,这多个处理器可以集成在同一块芯片上,也可以各自为独立的芯片。
存储器260还存储有除计算机程序之外的其他数据296,其他数据296可包括操作系统294或应用程序292运行过程中产生的数据,比如系统数据(例如操作系统294的配置参数)和用户数据。
存储器260一般包括内存和外存。内存包括但不限于随机存取存储器(randomaccess memory,RAM),只读存储器(read-only memory,ROM),或高速缓存(cache)等。外存包括但不限于闪存(flash memory)、硬盘、通用串行总线(universal serial bus,USB)盘等,计算机程序通常被存储在外存上,处理单元250在执行计算机程序前会将该程序从外存加载到内存。
在一个实施例中,操作系统294中包含了用于实现本申请实施例所提供的网页内容提取方法的计算机程序,从而使得处理器250运行操作系统294后,实现本申请实施例提供的网页内容提取方法的步骤。
输入设备230,用于接收用户输入信息,比如数字/字符信息、触摸操作或手势,以及产生对应的输入信号。具体地,在一个实施例中,该输入设备230包括触控面板。触控面板,也称为触摸屏,可收集用户在其上的触摸操作,并生成触控信号以驱动相关的组件响应用户的操作。除了触控面板,输入设备230还可以包括其他输入设备,包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示设备240可以为液晶显示器(liquid crystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)等显示面板。在一些实施例中,触控面板可覆盖显示设备240上,以形成触摸显示屏。
通信子系统210为终端200的基本通信单元,用于终端200的数据发送和接收。电源220用于给上述各个部件供电,具体可以为电源管理芯片。
当终端设备200为无线终端时,通信子系统210包括无线调制解调器(wirelessmodem),主要实现基带处理、调制解调、信号放大和滤波、均衡等功能。在一个实施例中,通信子系统210包括:基带处理器、射频电路和天线。其中,射频电路和天线主要负责信号发送和接收;基带处理器负责信号的处理,比如信号的A/D、D/A转换、信号的编解码等等。基带处理器支持无线通信标准中的一种或多种,这里的无线通信标准包括但不限于全球移动通信系统(global system for mobile communications,GSM)、码分多址接入(code divisionmultiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、高速分组接入(high speed packet access,HSPA)、长期演进(long-termevolution,LTE)等。基带处理器可以为一个单独的芯片,也可以和处理单元250所包含的处理器可以集成在同一芯片中。
可选地,终端设备200还包括一个或多个传感器280,例如加速度传感器、光传感器等。
本申请实施例提供的网页内容提取方法可由终端设备200的软件、硬件和/或固件的适当组合执行。例如,可以由图2所示的操作系统294结合必要的硬件来实施。
此外,所属领域的技术人员可以理解终端200可包括比图2中所示部件更少或更多的部件,图2所示的终端设备200仅示出了与本申请实施例所公开的多个实现方式更加相关的部件。
在一个实施例中,终端设备200所包含的组件,从逻辑上可划分为如图3所示的硬件层21、操作系统294,以及应用层29。硬件层21包括处理单元250、存储器260、输入设备230、显示设备240等硬件资源。应用层29包括一个或多个应用程序,比如应用程序292,应用程序292可以为社交类应用、媒体播放器、浏览器等任意类型的应用程序。应用程序292的用户界面2923中包含网页2925以及其它控件。操作系统294作为硬件层21和应用层29之间的软件中间件,是管理和控制硬件与软件资源的计算机程序。在一个实施例中,操作系统294包括内核23,库(libraries)与运行时(runtime)25以及框架(framework)27。其中,内核23用于提供底层系统组件和服务,例如:安全、内存管理、进程管理、硬件驱动等;硬件驱动包括、显示器驱动231、处理器驱动235、存储器驱动37等。库与运行时25也叫做运行时库,它为可执行程序在运行时提供所需要的库文件和执行环境。在一个实施例中,库与运行时25包括系统运行时(system runtime)251、网页运行时(web runtime)252、和功能库258。系统运行时251是操作系统的运行环境,比如虚拟机。网页运行时252主要包括网页执行环境(pagecontext)253和脚本执行环境(script context)255,其中,网页执行环境253通过相应的功能库解析html、css等格式的网页源代码,脚本执行环境255通过相应的功能库解析执行JavaScript等脚本语言实现的代码或可执行文件。功能库258是为可执行程序在运行时提供支持的计算机程序库,包括浏览器引擎(比如webkit)、图形处理引擎等。框架27包括系统服务271,用于为应用层29中的应用程序提供各种基础的公共组件和服务,比如窗口管理、位置管理等等。所属领域的技术人员可以理解终端200可包括比图3所示的更少或更多的部件,图3所示的该终端设备仅包括与本申请实施例所公开的多个实现方式更加相关的部件。
在一个实施例中,如图3所示,用户界面2923中内嵌的网页2925由网页显示组件26来加载和显示。网页显示组件26可以是操作系统294包含的用于显示网页的组件,也可以是应用程序292私有的网页显示组件。网页显示组件26运行于系统运行时251,用于加载和显示网页,它利用web runtime252完成网页解析渲染和脚本解释执行,最终将网页的内容呈现给用户。本发明提供的网页内容的提取方法通过网页显示组件26开放的接口向网页2925注入内容提取模块24和信息反馈模块28,内容提取模块24基于操作系统294派发的系统事件提取网页2925中指定位置处的内容,信息反馈模块28将提取的内容传送给操作系统294;操作系统294进而根据提取的内容进行关键词提取、内容推送或服务推荐等。下面详细描述本申请实施例提供的网页内容提取方法。
如图4所示,本申请实施例提供的网页内容提取方法包括如下步骤:
S401:操作系统294识别应用程序272的网页显示组件26。网页显示组件是用于加载和显示网页的功能实体,其作用相当于浏览器。操作系统通常会提供原生的网页显示组件,例如,
Figure BDA0001433494650000081
系统提供了用于显示网页的网页视图(webview)类,基于webview创建的实例即为网页显示组件。有些应用程序直接利用操作系统提供的网页显示组件来进行网页加载和显示,但还有很多应用程序是使用私有的网页显示组件来替代操作系统的网页显示组件。因此不同的应用程序很可能会使用不同的网页显示组件来加载和显示网页,步骤S401通过应用程序的特征(比如安装包标识)或者应用程序的界面包含的控件的特征(比如接口功能、渲染操作)来动态识别应用程序的网页显示组件,识别的时机可以是应用程序272当前的用户界面2923创建时,也可以在用户界面2923显示后,也可以在两者之间的有效时间点。在一个实施例中,步骤S401可以由操作系统294包含的框架27来实施,更具体地,可由框架中的系统服务271驱动网页显示组件执行环境来实施,其中,网页显示组件执行环境运行在系统runtime,系统服务271可以是操作系统294原生的,也可以是基于操作系统294原生的系统服务修改后的。详细的识别方法请见后面的实施例。
S403:操作系统294通过调用识别出的网页显示组件26的接口以向网页注入内容提取模块24和信息反馈模块28。内容提取模块24用于从网页2925中提取指定坐标对应的内容,信息反馈模块28用于将内容提取模块24提取的内容通过特定通信机制传送给操作系统294。内容提取模块24和信息反馈模块28为脚本语言实现的代码、脚本或其它形式的计算机程序,这些程序或代码可以集成在操作系统中,例如集成在操作系统的框架27中,也可以预先存储在终端设备200的存储器260中,也可从网络侧下载获取。操作系统294通过调用网页显示组件26的特定接口以将内容提取模块24和信息反馈模块28对应的程序或代码注入网页2925的源代码中,网页2925对应的网页运行时252解析执行该源代码后实现网页内容提取和信息反馈的功能。操作系统294也可以通过网页显示组件26的特定接口直接将内容提取模块24和信息反馈模块28对应的程序或代码传送给网页运行时252的脚本执行环境255,脚本执行环境255运行该程序或代码后实现网页内容提取和信息反馈的功能。关于注入内容提取模块24和信息反馈模块28的更具体的过程请见后面的实施例。
S405:操作系统294向网页显示组件26派发包含有坐标信息的系统事件。在一个实施例中,该系统事件可以是操作系统基于用户的操作触发的,比如基于用户对界面中某个元素或某个区域的操作(比如点击、拖拽等),系统会产生一个系统事件,该系统事件中包含与用户操作的位置相关的系统坐标。在另一个实施例中,该系统事件也可以是操作系统模拟的事件,操作系统294可以在特定时机模拟和派发一个系统事件,以触发页面内容提取,模拟的系统事件包含操作系统根据特定逻辑运算出的系统坐标。操作系统294模拟和派发系统事件的时机包括但不限于:显示网页2925后的预设时长内,当用户超过预设时长没有任何操作,或用户阅读该网页的时间超过预设时长。
S407:网页显示组件26将操作系统294派发的系统事件转换为网页运行时252可监听和响应的网页事件(web event),并派发该网页事件,该网页事件包含指示网页2925中的第一位置的网页坐标。该事件转换操作至少包括将系统事件所包含的系统坐标转换为网页坐标,该网页坐标对应网页中的某一元素或某一区域的内容。在一个实施例中,操作系统294派发的系统事件为自定义系统事件,该自定义事件为新增系统事件,与操作系统现有的系统事件不冲突;相应地,上述网页事件也是自定义网页事件,该自定义网页事件及其处理逻辑与现有的其它类型的网页事件不冲突,所以不会干扰页面的其它网页事件的派发和处理。在一个实施例中,网页显示组件26直接向内容提取模块24派发自定义网页事件,内容提取模块24响应于该自定义网页事件,执行网页内容提取操作。在一个实施例中,网页显示组件26向网页2925对应的浏览器对象模型(BOM)树的窗口(window)节点派发该自定义网页事件,窗口节点为BOM树的根节点,该自定义事件会从窗口节点开始传递至网页2925的其它节点。可以注册一个事件监听器,专门用于监听这个自定义的网页事件,当事件监听器监听到该自定义网页事件后触发内容提取模块24执行网页内容提取操作;进一步地,事件监听器可以阻止该网页事件继续传递,从而降低整个页面提取流程对页面的影响。
可选地,在一个实施例中,在操作系统294派发的系统事件传递到网页显示组件26之前,操作系统的特定组件,比如网页显示组件执行环境,可以拦截该系统事件,将其转换为上述自定义的网页事件,然后再将该自定的网页事件传递到网页显示组件26,即步骤S407中事件转换的操作也可以由操作系统的某个组件来执行。
S409:内容提取模块24根据该网页事件包含的网页坐标,从网页2925中提取该网页坐标对应的内容,其中,提取的网页内容包括但不限于:文字、语音、视频、图片和超链接等。内容提取模块24提取网页内容的具体实现细节可参照后面的实施例。
S411:信息反馈模块28从内容提取模块24获取提取的内容,并将提取的内容传送给操作系统294。运行态的内容提取模块24和信息反馈模块28运行于网页运行时中同一执行环境,信息反馈模块28可以从内容提取模块24获取提取的网页内容,进而将接收到的网页内容传送给操作系统294。由于信息反馈模块28运行在网页运行时252,而操作系统运行在系统运行时251,两者不能直接通信,因此信息反馈模块28需要调用库或者特定接口以将提取的内容传送至操作系统294。在一个实施例中,内容提取模块24和信息反馈模块28为JavaScript代码或程序,运行于网页运行时252的脚本执行环境,比如JS执行环境中,信息反馈模块28通过JS binding机制将提取的网页内容传回网页执行环境253,网页执行环境253通过调用特定接口,比如网页运行时252和/或网页显示组件26的接口,以将提取的网页内容传送给运行于系统运行时的系统服务271中。
可选地,在完成网页内容提取以及将提取的内容传送给操作系统之后,本申请实施例提供的网页内容提取方法还包括:
S413:撤销注入的内容提取模块24和信息反馈模块28。撤销的过程主要包括通过网页显示组件26的接口,将内容提取模块24和信息反馈模块28从网页2925的源代码或者网页运行时252中移除。
基于以上实施例描述的网页内容提取方法,下面进一步描述各方法步骤的相关实现细节。
步骤S401中识别应用程序272的网页显示组件26可以通过多种方式实现。在一个实施例中,操作系统294可以采用静态识别方案来识别应用程序292使用的用于加载和显示网页的网页显示组件26。在静态识别方案中,可以预先通过人工或机器离线分析确定多个应用,比如热门应用所使用的网页显示组件,并通过预先配置的数据库或者数据表来存储应用程序的标识与应用程序的网页显示组件的标识之间的对应关系,其中,应用程序的标识包括但不限于:应用程序的名称,应用程序安装包的ID,应用程序安装包的签名信息等;网页显示组件的标识包括但不限于:网页显示组件的名称、网页显示组件的签名信息等。这样,操作系统294可以根据应用程序292的标识,从预先配置的数据库中查询得到与应用程序292的标识对应的网页显示组件的标识,进而根据该网页显示组件的标识,从应用程序292的用户界面包含的所有控件中确定与该网页组件的标识相对应的控件,确定的该控件即为应用程序292的网页显示组件26。例如,若该网页显示组件的标识为该网页显示组件的签名信息,则可以遍历用户界面2923的控件树,以确定出签名信息与该网页显示组件的签名信息相同的控件,该控件为被应用程序272用来显示网页的网页显示组件,其中,该控件树是操作系统294在解析用户界面2923后得到的,包含用户界面2923中的所有控件,每个控件的签名信息可以通过反编译的方式得到。
在另一个实施例中,操作系统294也可以动态识别方案来识别应用程序292使用的网页显示组件26。具体地,可以通过机器学习的方法分析一种或多种网页显示组件的功能和/或行为,并建立网页显示组件特征模型,该特征模型可以代表多种网页显示组件共同的特征。进一步地,操作系统294根据应用程序292的用户界面包含的各个控件的特征,来识别出与网页显示组件特征模型最匹配的控件,控件的特征包括但不限于功能特征和行为特征。其中,控件的功能特征表示该控件的功能属性,包括用于描述或表征该控件提供的接口的功能的接口功能特征;控件的行为特征表示该控件执行的操作或命令的特征,比如操作类型、操作对象等。控件的行为特征典型地包括控件的渲染特征,渲染特征表征控件执行的渲染操作的特征,比如渲染时执行的绘制操作、绘制内容、绘制坐标等。本申请实施例中的“执行的操作/命令”包括已经执行,正在执行或待执行的操作/命令中的至少一种。下面描述动态识别方案的两个具体示例。
(1)基于功能模型的动态识别方案:通过人工或者机器学习方法,分析提取出多种网页显示组件的相同或相似的功能,比如提供的相同功能的接口,如页面加载功能接口,历史(history)管理接口,地址导航接口等。基于提取出的功能建立功能模型,用以表征网页显示组件的必要功能,包括但不限于:页面加载功能、页面刷新功能、历史管理功能、地址导航功能等。相应地,操作系统294可以从用户界面2923包含的一个或多个控件中识别出接口功能特征与该功能模型匹配度最高的控件,该匹配度最高的控件为应用程序292的网页显示组件26。基于功能模型的动态识别方案,通过分析用户界面所包含的各个控件,尤其是视图控件的接口属性
(2)基于渲染模型的动态识别方案:通过人工或者机器学习方法分析一个或多个网页显示组件的显示列表(display list),display list包含网页显示组件进行网页渲染时需要完成的绘制操作、绘制内容、绘制坐标等,并依此构建渲染模型,该渲染模型表征渲染网页需要完成的绘制操作的特征,包括但不限于:绘制方式、绘制内容、绘制坐标等。操作系统294可以分别分析用户界面2923包含的各个控件的display list,识别出中识别出渲染特征与渲染模型匹配度最高的控件,该匹配度最高的控件为应用程序292的网页显示组件26。
可以理解的是,上述两种动态识别的方案也可以结合,即可以同时基于功能模型和渲染模型来识别出功能特征和渲染特征分别与功能模型和渲染模型相匹配的控件,这样识别的准确率更高。
在一个实施例中,也可以结合上述静态识别方案和动态识别方案来识别应用程序292使用的用于加载和显示网页的网页显示组件26。具体地,如图5所示,操作系统294可以通过以下步骤来识别出应用程序292的网页显示组件26:
S4012:根据应用程序292的标识查询数据库,该数据库预先存储了至少一个应用程序的标识与该至少一个应用程序的网页显示组件的标识的对应关系。
S4014:若查找到与应用程序的标识对应的网页显示组件的标识,则执行S4016,否则执行S4018;
S4016:根据查找到的标识从用户界面2923的控件中确定对应的控件(即应用程序292的网页显示组件),识别流程结束;
S4018:采用动态识别方案来识别从用户界面2923的控件中识别出网页显示组件,
S4019:更新数据库,即建立识别出的网页显示组件的标识与应用程序292的标识之间的对应关系,并将该对应关系添加到数据库,识别流程结束。
识别流程结束之后,可以进入图4所示的模块注入、事件派发、信息提取和反馈等流程。在一个实施例中,在步骤S403中,操作系统294可以调用网页显示组件26的特定接口以将实现内容提取模块24和信息反馈模块28功能的代码或程序注入或添加到网页2925的源代码中。例如,通过load接口向网页2925的源代码的<head>或<body>中添加Javascript对象,如下所示。
Figure BDA0001433494650000111
Figure BDA0001433494650000121
网页运行时252中的网页执行环境253解析网页2925的源代码以获取实现内容提取模块24和信息反馈模块28功能的代码或程序,并将该代码或程序交由脚本执行环境255运行,以用于实现网页内容提取和信息反馈的功能。具体地,网页执行环境253按照W3C的文档对象模型(document object model,DOM)标准解析网页2925的源代码后得到该网页2925的DOM树。如图6所示,一棵DOM树包含若干个节点,这些节点按照树形结构组织,整个网页对应于一个文档节点(document),网页中的每个元素对应于元素节点,比如视频<video>,图片<img>,段落<P>等,<html>是所有节点的根节点。网页2925的源代码被网页执行环境253解析后,注入的内容提取模块24和信息反馈模块28位于网页2925的DOM树的一个元素节点,比如<head>,或者<body>下面。应当理解,静态的内容提取模块24和信息反馈模块28为通过编程语言编写的代码或可执行程序,该代码被网页运行时252解析执行后实现网页内容提取和信息反馈的功能。运行态的内容提取模块24和信息反馈模块28为线程或进程,两者可以为不同的线程或进程,也可以是同一线程或进程。
在另一个实施例中,操作系统294也可以调用网页显示组件26的特定接口直接将实现内容提取模块24和信息反馈模块28功能的代码或可执行程序传递给网页2925对应的脚本执行环境255执行,以实现网页内容提取和信息反馈的功能。
如步骤S407和S409所描述的那样,内容提取模块24基于自定义的网页事件触发执行网页内容提取操作。网页2925对应的BOM树的根节点为窗口(window)节点,网页2925的DOM树作为一个整体可以认为是窗口节点下的一个子节点,如图6所示。网页显示组件26派发的自定义网页事件会从窗口节点开始向DOM树中的目标节点传递,该目标节点是根据自定义网页事件中携带的网页坐标确定的。在一个实施例中,可以在窗口节点注册一个事件监听器,专门用于监听这个自定义的网页事件,当该自定义网页事件传递至窗口节点时,事件监听器监听到该自定义网页事件并触发内容提取模块24执行网页内容提取操作。在另一个实施例中,也可以在DOM树的根节点,或者该自定义网页事件传递路径上的其它节点,如body节点注册事件监听器,从而根据监听到的自定义网页事件触发内容提取模块完成内容提取。可选地,为了减少对网页正常处理逻辑的干扰,当事件监听器监听到该自定义网页事件并触发内容提取模块24执行网页内容提取操作后,可以阻止该网页事件继续传递。进一步地,在完成网页内容提取后,也可以取消该事件监听器。
在一个实施例中,步骤S403中注入内容提取模块24和信息反馈模块28的时机与注入策略有关。最优的注入策略是按需注入,即在需要提取网页内容时,才注入内容提取模块和信息反馈模块,这样可以把对网页的影响降到最小。但有些情况下,由于部分网页显示组件接口的限制,注入的信息反馈模块无法在当前显示的网页的执行环境中发挥作用,只对后续即将要加载的网页的执行环境有效,因此需要在网页加载前完成反馈模块信息的注入,并且注入后长驻页面逻辑,当不提取网页内容时,提前注入的信息反馈模块处于休眠状态;在需要提取网页内容的时候,信息提取功能模块会触发信息反馈模块工作,并在工作完成后恢复到休眠状态。在这种情况下,无法支持内容提取模块和信息反馈模块的按需注入,只能支持次优注入策略,即分阶段注入内容提取模块和信息反馈模块。因此,操作系统294先确定应用程序292的网页显示组件26所支持的注入策略,再进行模块注入操作。操作系统294可以在应用程序292安装时确定其网页显示组件26所支持的注入策略并记录到数据库中,也可以在应用程序292的用户界面2923创建时来确定注入策略。与上述识别应用程序的网页显示组件的过程类似,操作系统294也可以采用静态方式或动态方式来确认应用程序292对应的注入策略。
在静态方式下,预先通过人工或机器离线测试多种网页显示组件,比如多个热门应用的网页显示组件是否支持按需注入,进而确定各个网页显示组件所支持的注入策略,然后将网页显示组件的标识与注入策略之间的对应关系存储到数据库或者数据表中。这样,可以先根据应用程序292的标识确定网页显示组件26的标识(可参见步骤S401的静态识别方案),然后再根据显示组件26的标识,查询该数据库或数据表以确定网页显示组件26所支持的注入策略。可以理解的是,也可以同一数据库或数据表中预先存储应用程序标识,应用程序所使用的网页显示组件的标识,以及该网页显示组件所支持的注入策略三者之间的映射关系,这样通过应用程序的标识,可以快速查询到该应用程序的网页显示组件的标识以及对应的注入策略,更加高效,而且便于数据库的维护。
在动态方式下,可以通过网页显示组件开放的接口的功能特征来确定该网页显示组件是否支持最优的注入策略。
在一个实施例中,也可以结合上述静态方式和动态方式来确定注入策略,即当无法从数据库中查询得到网页显示组件对应的注入策略时,通过该网页显示组件的接口功能特征来确定该网页显示组件是否支持最优的注入策略。
图7示出了注入内容提取模块和信息反馈模块的一个过程实例。根据图7,在应用程序安装时:可以根据应用程序的标识查询数据库,以确定其网页显示组件对应的注入策略。如果根据应用程序的标识无法从数据库中查询到其网页显示组件对应的注入策略时,即注入策略未知时,可以采用动态的方式来确定注入策略,或者也可以暂不做判断,遗留到后续环节再判断。
可选地,为了后续处理时快速获知应用程序的注入策略,可以设置相应的标志位(flag)来标识应用程序的注入策略,比如,若注入策略为最优,则设置flag为“1”,若注入策略为次优,则设置flag为“0”;如果注入策略未知,则设置flag为“01”。
进一步地,在应用程序的用户界面创建时:查询应用程序的flag,并根据应用程序的flag确定应用程序的网页显示组件支持的注入策略,如果支持最优的注入策略,则表示可以按需注入内容提取模块和信息反馈模块,因此当前不需要执行模块注入操作;如果支持次优的注入策略,则采用上述实施例描述的识别方法识别出应用程序的网页显示组件,然后利用识别出的网页显示组件的接口注入信息反馈模块;如果注入策略未知,则采用动态方式来确定注入策略,并更新数据库,以将该网页显示组件的标识以及确定出的注入策略的对应关系添加到数据库中。为了兼容次优及最优注入策略,flag的查询在即应用程序Activity oncreate阶段完成,网页显示组件在此阶段生成,并且还没有加载网页。
在应用程序的用户界面显示后:如果有提取网页内容的需求,则查询应用程序的flag,如果flag指示最优的注入策略,则采用上述实施例描述的识别方法识别出应用程序的网页显示组件,然后利用识别出的网页显示组件的接口同时注入内容提取模块和信息反馈模块;如果flag指示次优的注入策略,则注入内容提取模块。其中,提取网页内容的需求可能是用户触发的,也可能是操作系统自行触发的。
可选地,在完成网页内容提取之后,若注入策略为最优,则撤销内容提取模块和信息反馈模块;若注入策略为次优,则撤销内容提取模块,并停止信息反馈模块。
在步骤S409中,内容提取模块24根据网页事件携带的位置信息(网页坐标)遍历网页2925的DOM树并通过坐标碰撞测试以确定位置信息对应的目标节点或元素,进而提取该目标节点对应的内容;其中,目标节点可能为一段文字或一张图片。基于网页坐标进行坐标碰撞测试以确定目标节点的方法为本领域技术人员熟知的技术,本申请实施例不展开描述相关的实现细节。
在一个实施例中,目标节点对应的内容可能与其周围节点的内容存在关联,比如若目标节点的显示属性为内联块(display=inline-block),或目标节点相邻的节点的显示属性为inline-block,则表示目标节点及其相邻节点对应的两部分内容会合并到一起作为一个整体显示,比如将两段文字合并成一段之后显示(用户看到的是一段文字,但其实这一段文字对应有两个节点)。在这种情况下,内容提取模块24会将同时提取目标节点对应的内容,以及其相邻节点对应的内容。
在一个实施例中,目标节点对应的内容可能包含大量的空格字符,使得目标节点对应的内容被显示为两部分,比如一个段落由于包含的空格字符较多导致换行,导致用户看到两段文字。在这种情况下,内容提取模块24会判断目标节点对应的内容中包含的空格字符的数量是否大于设定阈值,如果是,则提取目标节点对应的内容中位于空格字符之前的一部分内容,或者位于所述空格字符之后的部分内容。可以理解的是,这里的阈值与网页显示的单行内容的字符数相关,比如阈值可以等于或者接近于单行内容包含的字符数。
在一个实施例中,如果目标节点对应的内容包含的字符的数量大于设定阈值,比如大段文字,则内容提取模块24可以仅提取该内容的一部分,比如目标节点对应的内容中靠近网页坐标的设定长度的字符,该网页坐标网页事件携带的。
本申请实施例通过上述方案,由操作系统动态识别出应用所使用的网页显示组件,然后通过识别出的该网页显示组件的接口,在合适的时机向网页中注入用于内容提取及信息反馈的模块,并通过自定义的系统事件触发内容提取模块提取网页中指定位置处的内容以及通过信息反馈模块将提取的网页内容传送至操作系统。可以看出,整个网页内容提取的过程是应用无感知的,不依赖于应用本身的功能,因此可以兼容各种不同类型的应用,同时内容提取和反馈的过程是基于自定义的系统事件和网页事件触发,从而避免了对系统,应用程序及页面的性能和逻辑的产生影响。进一步地,基于内容提取模块24提取的网页内容,可以进行数据挖掘以建立用户画像,或者实现各种各样的智能推荐服务。比如,当提取的网页内容为文字时,可以从提取的文字中确定一个或多个关键词,然后显示关键词,或者基于关键词向用户推送内容,或推荐商品、服务等。内容提取模块24提取的文字、语音、视频、图片、统一资源定位符(Uniform Resource Locator,URL)地址等网页内容,也可以作为人工智能中深度学习训练的数据样本。
需要说明的是,在某些应用场景下,也可以由应用程序292来实施上述实施例所描述的网页内容提取方法,以提取应用程序292的用户界面2923中嵌入的网页2925的内容。由应用程序292实施上述方法与操作系统294实施上述方法的主要区别在于,应用程序292不需要识别其自身的网页显示组件26,因为对于应用程序292来说,它所使用的网页显示组件是在开发时就已经确定了,应用程序292自身可以感知其使用的网页显示组件。而对于操作系统294来说,由于终端设备200上安装的应用程序数目较多,且不同的应用程序使用的网页显示组件很可能不一样,有一些应用使用操作系统原生的网页显示组件,有一些应用则使用私有的网页显示组件,或者第三方的网页显示组件。因此操作系统294很难直接确定应用程序292所使用的网页显示组件26,需要通过上述实施例中的步骤S401来完成应用程序292的网页显示组件的识别,进而再进行模块注入和内容提取的操作。
在一个实施例中,应用程序292的网页显示组件26加载并显示网页2925后,通过网页显示组件的特定接口向网页2925注入内容提取模块24和信息反馈模块28,然后基于用户的操作行为或操作状态触发网页事件,比如基于用户对界面中某个元素或某个区域的操作(比如点击、拖拽等),或用户超过预设时长没有任何操作时触发该网页事件。内容提取模块24监听到该网页事件后执行内容提取操作,信息反馈模块28将提取的内容反馈给应用程序。其中,模块注入、内容提取和信息反馈的相关实现细节可以参照前面的实施例,不再赘述。可选地,应用程序可以进一步从提取的内容中筛选出多个关键词,然后基于一个或多个关键词向用户推送内容,或推荐商品、服务等。
在另一个实施例中,应用程序292也可以实施图4相关实施例所描述的网页内容提取方法,以提取其它应用程序(以下称为“目标应用”)的界面中的网页内容。应用程序292与目标应用可以是独立的第三方应用,也可能是相关联的应用,比如同一公司开发的应用、基于相同的软件开发包开发的应用或者具有相似功能的应用。具体地,应用程序292可以使用步骤S401所描述的识别方法识别出目标应用所使用的网页显示组件,然后通过目标应用的网页显示组件的接口,向目标应用的界面中的网页注入内容提取模块和信息反馈模块,注入的模块网页运行时运行后实现网页内容提取和信息反馈的功能。其中,内容提取模块根据基于用户的操作行为或操作状态触发网页事件,从目标应用的界面中的网页中提取指定坐标对应的内容,信息反馈模块将提取的内容传送给应用程序292,从而实现了跨应用的网页内容提取。其中,网页显示组件的识别、模块注入、内容提取和信息反馈的相关实现细节可以参照前面的实施例,不再赘述。可选地,应用程序292可以进一步从提取的内容中筛选出多个关键词,然后基于一个或多个关键词向用户推送内容,或推荐商品、服务等。
在某些特殊情形下,比如有些应用程序使用了特殊的网页显示组件,该特殊的网页显示组件不对外暴露接口或功能,因此难以被操作系统识别,而且由于接口不暴露,也无法利用其接口注入内容提取模块和信息反馈模块。鉴于此,本申请实施例还提供另一种网页内容提取方法,通过显示列表(display list)来提取网页的内容。具体地,操作系统在渲染应用程序的用户界面时会构建和维护display list。display list是一个缓冲区,它里面记录了即将要执行的绘制操作序列,这些绘制操作最终会转化为图形命令由操作系统通过图形处理软件库或者由图形处理器(graphics processing unit,GPU)执行,从而绘制出应用程序的用户界面。一条绘制操作至少包含有绘制内容(画什么)和绘制坐标(画在哪里)。在需要提取网页中第一位置处的内容时,操作系统根据该位置对应的网页坐标,从display list中识别出绘制坐标与该网页坐标对应的绘制操作,将该绘制操作的绘制内容作为目标内容提取出来。其中,绘制坐标与该网页坐标对应的绘制操作可以为绘制坐标与该网页坐标相同的绘制操作,和/或绘制坐标与该网页坐标的距离在预设范围内的绘制操作。
在一个实施例中,上述网页坐标对应于用户当前的操作位置,比如用户点击或者选择网页第一位置处的内容。在另一个实施例中,上述网页坐标也可以是操作系统指定的,比如用户在用户无感知的情况下,派发一个自定义系统事件以触发网页内容提取,该系统事件中携带该网页坐标或者与该网页坐标对应的系统坐标。在一个实施例中,可以由操作系统的网页显示组件执行环境来执行上述网页内容提取的操作,网页显示组件执行环境完成网页内容提取后,将提取的内容反馈给系统服务,其中网页显示组件执行环境运行在系统runtime。
需要说明的是,以上描述的基于显示列表(display list)的网页内容提取方法可以单独实施,也可以与图4-7相关实施例所描述的方法组合实施。例如,当通过静态识别方案和动态识别方案均无法识别应用程序的网页显示组件时,使用上述基于显示列表(display list)的网页内容提取方案来实现网页内容的提取。
在一个实施例中,本申请实施例提供的网页内容提取方法通过代码实现,这些代码包含在操作系统中,作为操作系统特性提供给用户。可选地,系统可以提供一个开关用户,用户可以选择开启或关闭该特性。当用户开启该特性时,操作系统即可基于用户的触发或者自行触发网页内容提取。
图8示出了终端设备200在运行
Figure BDA0001433494650000161
系统的情形下实施上述实施例所描述的网页内容提取方法的过程。基于
Figure BDA0001433494650000162
系统的应用程序通常使用
Figure BDA0001433494650000163
系统自带的网页视图(webview)或者第三方的webview来加载和显示网页;webview运行在
Figure BDA0001433494650000164
系统的框架27中的网页视图执行环境(webview context)273中,框架27中的系统服务271驱动webview context 273完成用户界面2923的控件的布局和渲染。用户界面2923通常为一个Activity,其包含有多个控件,这些控件中有一些是视图控件,比如<Textview>、<ImgView>、<VideoView>,webview也是一种视图控件,如果用户界面2923中嵌入有网页2925,则用户界面会包含webview,用于加载和显示该网页。webview context 273使用图4相关的实施例中步骤S401的识别方法,从用户界面2923的视图控件中识别出webview 261,然后调用webview 261的接口向网页注入内容提取模块24和信息反馈模块28,注入的内容提取模块24和信息反馈模块28运行在网页运行时24的JS执行环境中。注入内容提取模块24和信息反馈模块28的时机与webview 261支持的注入策略相关,具体的实现细节可以参见前面的实施例。
需要提取网页的内容时,系统服务271向webview 261派发自定义系统事件1,如步骤S405所描述的那样,自定义系统事件1可以是基于用户的操作触发的,也是可以系统模拟的。webview 261接收到自定义系统事件1后,将其转换为自定义web事件3,并将自定义web事件3传递到用户界面2923的BOM树的窗口节点。内容提取模块24可以在窗口节点注册事件监听器,当事件监听器监听到自定义web事件3后触发内容提取模块24提取网页中指定位置处的内容,该指定位置通过自定义web事件3携带的坐标信息来指示。可选地,在自定义系统事件1传递到webview 261之前,操作系统的其它组件,比如webview context 273,可以拦截自定义系统事件1,将其转换为上述自定义web事件3,然后再将自定义web事件3传递到webview 261,即事件转换的操作也可以不由webview 261来执行。
进一步地,内容提取模块24将提取的内容传送给信息反馈模块28,信息反馈模块28通过JS binding机制将提取的内容传回网页运行时252的网页执行环境,网页执行环境通过Java本地接口(java native interface,JNI)和/或进程间通信机制(如Binder,管道、套接字等)将信息传送给运行于系统runtime的系统服务271或者框架27中的其它系统组件,网页内容提取的过程至此完成。
系统服务271或者框架27中的其它系统组件基于内容提取模块24提取的网页内容,可以进行数据挖掘以建立用户画像,或者实现各种各样的智能推荐服务。比如,对提取的网页内容中确定一个或多个关键词,然后显示关键词,或者基于关键词向用户推送内容,或推荐商品、服务等。也可以提取网页中的语音、视频、图片、超链接等内容,进行用户数据挖掘。
在一个实施例中,如图9所示,操作系统(系统服务271或者框架27中的其它系统组件)可以将内容提取模块24提取的网页内容中的关键词显示到终端设备200屏幕的特定区域,供用户浏览;其中,显示的关键词包括但不限于:人名、地名、商品名称、电影名称、技术术语等等。进一步地,操作系统可以基于一个或多个关键词,生成一个或多个智能服务卡片,智能服务卡片用于向用户展示推荐的内容、商品和服务。其中,推荐的内容包括但不限于:歌曲、电影、电子图书、人物介绍、景点介绍等;商品包括但不限于:电子商务网站中在售的商品;服务包括但不限于:导航、车票预订、酒店预订、翻译等。通过操作智能服务卡片,用户可以快速获得感兴趣的内容、商品和服务。可选地,用户也可以从显示的关键词中选择自己感兴趣的关键词,比如可以点击某个关键词,基于用户对关键词的选择操作,操作系统根据用户选择的关键词,进行更有针对性的推荐。内容提取模块24提取的文字、语音、视频、图片、统一资源定位符(Uniform Resource Locator,URL)地址等网页内容,也可以用作人工智能中深度学习训练的数据样本。
在一个实施例中,可以将本申请实施例提供的网页内容提取方法以及基于提取的网页内容实现的智能服务推荐方法通过代码实现,并作为操作系统特性提供给用户。当用户开启该特性时,操作系统即可基于用户的触发或者自行触发网页内容提取,并进行服务推荐。在另一个实施例中,也可以将本申请实施例提供的网页内容提取方法以及基于提取的网页内容实现的智能服务推荐方法通过代码实现,并封装为应用程序编程接口(application programming interface,API),开放给上层应用程序,应用程序通过调用API以实现网页内容提取以及智能服务推荐。例如,一个应用程序可以通过调用上述API提取另一个应用程序的用户界面中包含的网页内容,从而可以实现跨应用的网页内容提取。
图10示出了运行
Figure BDA0001433494650000171
系统的终端设备200实施上述实施例所描述的网页内容提取方法的更详细的过程。
如图10中过程①所示,操作系统框架中的系统服务(system service)驱动webview执行环境(webview context)完成应用程序的活动(Activity)的控件布局和渲染,Activity也可以视为一种用户界面。webview Context具体包括布局管理器和渲染管理器,在Activity的生命周期的oncreate阶段,布局管理器通过解析Activity的layout文件,以将Activity中包含的视图(view)控件构造为一棵Activity控件树,Activity中嵌入的网页对应的webview控件也被包含的该控件树中。渲染管理器用于实现Activity的控件的渲染,即将控件绘制到显示区域。由于操作系统无法直接感知第三方应用的webview,因此webview context的布局管理器遍历Activity控件树,并通过上述实施例步骤S401描述的识别方法从Activity控件树中识别出webview,如过程②所示。通过webview可以进一步确定网页对应的网页执行环境(过程③),然后webview context可以调用webview开放的接口,比如addJavascriptInterface,evaluateJavaScript,或者load向网页的源代码或者JS执行环境注入内容提取模块和信息反馈模块,如过程④所示。注入的模块具体为JavaScript语言实现的Java代码或程序,被JS执行环境运行后实现网页内容提取和信息反馈的功能。网页所在的Activity的window节点是网页事件的根节点,点击网页的任一DOM节点时,网页事件都从window节点开始传递。因此可以在window节点或者网页事件传递路径上的其它节点注册一个事件监听器,专门负责监听用于触发网页内容提取的自定义网页事件,当该时间监听器监听到该自定义网页事件后,阻止该事件继续传递,并触发内容提取模块根据该自定义网页事件中携带的网页坐标,提取网页中提取对应的内容。
可以看到,通过上述过程①②③④,建立了从system service到网页的直通链路。内容提取模块和信息反馈模块运行在JS执行环境中,内容提取模块将提取的网页内容传递给信息反馈模块,并在JS执行环境中触发非内建(build-in)的回调(callback),信息反馈模块监听并拦截非build-in的callback,然后通过JS Binding机制将提取的网页内容传回网页执行环境,网页执行环境使用JNI将提取的网页内容通过上述直通链路反馈至操作系统框架中的system service。
其中,识别webview以及注入内容提取模块和信息反馈模块的时机与应用程序的webview所支持的注入策略有关。当应用程序安装的时候,可根据应用程序安装包的标识判断该应用程序是否在支持“按需”注入的哈希数据库中,如果是,则设置该应用程序的相关标志位为支持最优的注入策略,表示可以按需注入内容提取模块和信息反馈模块。对于不在哈希数据库中的应用程序,则设置相关标志位为暂不支持,后续在适当时机再判断是否支持最优的注入策略,如果支持,则更新哈希数据库;如果确定不支持最优的注入策略,则设置相关标志位为支持次优注入策略。
进一步地,在应用程序的Activity生命周期oncreate阶段,通过查询应用程序的标志位来确定其对应的注入策略,在此阶段webview实例生成,但暂未加载网页。若应用程序支持最优注入策略,则此阶段不需要进行webview识别和模块注入操作;若应用程序支持次优注入策略,此阶段,具体在布局管理器解析Activity的布局文件并构造Activity控件树完成webview识别,并通过识别出的webview的接口注入信息反馈模块,此模块只对即将加载的网页有效。
当应用程序的Activity显示出来后,如果需要提取页面信息,对于支持最优注入策略的应用程序,通过上述实施例步骤S401描述的识别方法识别出webview实例,并通过webview的接口注入内容提取模块和信息反馈模块。注入的模块只作用于webview已经加载并显示的页面,并且完成网页内容提取和信息反馈后,可以直接撤销两个模块,从而得到按需注入和提取网页内容的目的。而对于支持最优注入策略的应用程序,则通过webview的接口注入内容提取模块(注:信息反馈模块已在Activity oncreate阶段注入)。
在一个实施例中,操作系统向webview派发一个自定义系统事件(用户触发或系统模拟),该系统事件包含使用
Figure BDA0001433494650000191
坐标系统定义的坐标。webview将此系统事件封装为web事件,同时将系统坐标转换为网页坐标。该Web事件触发内容提取模块提取网页坐标对应的内容。可选地,在自定义系统事件传到webview前,操作系统的其它组件可以截获该自定义系统事件,并将其封装为一个自定义web事件,此自定义web事件包含转换后的网页坐标。同时,内容提取模块只监听这个自定义web事件,当监听到自定义web事件后,根据事件携带的网页坐标完成内容提取,从而不影响网页正常的事件处理逻辑,将整个页面内容提取流程对页面的影响尽可能降到最低。
基于以上实施例描述的网页内容提取方法,本申请实施例还提供一种终端设备300,如图11所示,该终端设备300包括:识别模块310和注入模块330,其中,识别模块310用于识别应用程序的网页显示组件,所述网页显示组件被所述应用程序配置为用于加载和显示用户界面中包含的网页;注入模块330用于通过所述网页显示组件的接口向所述网页注入内容提取模块和信息反馈模块;识别模块310和注入模块330具体的工作过程可以分别参见前述方法实施例中步骤S401和S403的相关实现细节,内容提取模块和信息反馈模块的具体工作过程可分别参见前述实施例中描述的内容提取模块24和信息反馈模块28的工作过程。
在一个实施例中,终端设备300还包括确定模块320,用于确定注入策略,该注入策略与注入所述内容提取模块和所述信息反馈模块的时机相关;其中,注入策略包括:最优的注入策略和次优的注入策略,本申请实施例用第一策略来指代最优的注入策略,用第二策略来指代次优的注入策略。确定模块320确定注入策略的时机可以是在应用程序安装时,也可以是在该应用程序的用户界面创建时。确定模块320确定注入策略的具体实现细节可以参见前述实施例中步骤S403相关的描述。
本申请实施例中识别模块310、确定模块320和注入模块330可由终端设备300的软件、硬件和/或固件的适当组合实现,比如通过计算机程序实现的一个或多个软件模块,这些软件模块可以包含在操作系统中,也可以作为独立的组件被操作系统或应用程序调用。在另一个实施例中,识别模块310、确定模块320和注入模块330也可以为处理器,其功能由处理器执行计算机程序(指令)来实现。
本申请实施例还提供一种终端设备400,如图12所示,该终端设备400包括:处理电路402,以及与其连接的通信接口404和存储介质406。
处理电路402用于处理数据,控制数据访问和存储,发出命令以及控制其它组件执行操作。处理电路402可以被实现为一个或多个处理器,一个或多个控制器和/或可用于执行程序的其它结构。处理电路402具体可以包括通用处理器,数字信号处理器(digitalsignal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field-programmable gate array,FPGA)或其它可编程逻辑组件中的至少一种。通用处理器可以包括微处理器,以及任何常规的处理器,控制器,微控制器,或状态机。处理电路302也可以实现为计算组件,例如DSP和微处理器的组合。
存储介质406可以包括非瞬时计算机可读存储介质(non-transitory computer-readable storage medium),如磁存储设备(例如,硬盘,软盘,磁条),光存储介质(例如,数字多功能光盘(digital versatile disc,DVD)),智能卡,闪存设备,RAM,ROM,可编程只读存储器(programmable read-only memory,PROM),可编程可擦除只读存储器(erasableprogrammable read-only memory,EPROM),寄存器,以及它们的任意组合。存储介质406可以耦合到处理电路402以使得处理电路402可读取信息和将信息写入到存储介质406。具体地,存储介质406可以集成到处理电路402,或者存储介质406和处理电路302可以是分开的。
通信接口404可包括电路和/或程序以实现终端设备400与一个或多个网络设备(例如,路由器、交换机、接入点等等)之间的双向通信。通信接口404包括至少一个接收电路416和/或至少一个发射电路418。在一个实施例中,通信接口404可以是全部或部分由无线调制解调器来实现。
在一个实施例中,存储介质406中存储有程序420,处理电路402被适配为执行存储在存储介质406中的程序420,以实现本申请任一方法实施例中的部分或全部步骤。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有实现本申请任一方法实施例中的方法步骤的代码、指令或程序。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:USB闪存盘、移动硬盘、ROM、RAM、或者光盘等各种可以存储程序代码的介质。

Claims (35)

1.一种终端设备中的网页内容提取方法,其特征在于,包括:
所述终端设备的操作系统识别应用程序的网页显示组件,所述网页显示组件被所述应用程序用于加载和显示用户界面中包含的网页;
所述操作系统通过所述网页显示组件的接口向所述网页注入内容提取模块和信息反馈模块;
所述内容提取模块根据所述网页显示组件派发的网页事件,从所述网页中提取第一网页坐标对应的内容,所述网页事件包含所述第一网页坐标;
所述信息反馈模块将所述内容提取模块提取的所述内容传送给所述操作系统。
2.如权利要求1所述的方法,其特征在于,所述识别所述应用程序的网页显示组件包括:
根据所述用户界面包含的至少一个控件的特征,识别出与特征模型匹配的控件,所述识别出的控件为所述应用程序的网页显示组件,其中,所述至少一个控件的特征包括:所述至少一个控件的功能特征和行为特征中的至少一种;所述特征模型表征多个网页显示组件的共同特征。
3.如权利要求2所述的方法,其特征在于,所述至少一个控件的功能特征包括所述至少一个控件的接口功能特征,所述接口功能特征表征所述至少一个控件的接口的功能;所述特征模型包括功能模型,所述功能模型表征网页显示组件的必要功能,所述必要功能包括:页面加载、页面刷新、历史管理、地址导航中的至少一种;
所述根据所述用户界面包含的至少一个控件的特征,识别出与所述特征模型匹配的控件包括:从所述至少一个控件中识别出接口功能特征与所述功能模型匹配度最高的控件。
4.如权利要求2所述的方法,其特征在于,所述至少一个控件的行为特征包括所述至少一个控件的渲染特征,所述渲染特征表征所述至少一个控件执行的渲染操作的特征;所述特征模型包括渲染模型,所述渲染模型表征渲染网页需要完成的绘制操作的特征,所述绘制操作的特征包括:绘制方式、绘制内容、绘制坐标中的至少一种;
所述根据所述用户界面包含的至少一个控件的特征,识别出与所述特征模型匹配的控件包括:从所述至少一个控件中识别出渲染特征与所述渲染模型匹配度最高的控件。
5.如权利要求2所述的方法,其特征在于,还包括:
建立所述应用程序的网页显示组件的标识与所述应用程序的标识之间的对应关系,并将所述对应关系存储至数据库。
6.如权利要求1所述的方法,其特征在于,所述识别应用程序的网页显示组件包括:
根据所述应用程序的标识,从预先配置的第一数据库中查询所述应用程序的网页显示组件的标识,所述第一数据库存储有所述应用程序的标识与所述应用程序的网页显示组件的标识的对应关系;
从所述用户界面包含的至少一个控件中,确定标识与所述网页显示组件的标识对应的控件,确定的所述控件为所述应用程序的网页显示组件;其中,所述至少一个控件包括所述应用程序的网页显示组件。
7.如权利要求1所述的方法,其特征在于,还包括:在所述应用程序安装时,或者所述应用程序的用户界面创建时,确定注入策略,所述注入策略与注入所述内容提取模块和所述信息反馈模块的时机相关;其中所述注入策略包括:第一策略和第二策略。
8.如权利要求7所述的方法,其特征在于,所述确定注入策略包括:根据所述应用程序的标识或者所述网页显示组件的标识,查询第二数据库,以确定所述网页显示组件对应的注入策略;所述第二数据库存储有至少一个应用程序的标识、至少一个网页显示组件的标识以及所述至少一种注入策略的对应关系。
9.如权利要求7所述的方法,其特征在于,所述确定注入策略包括:通过动态行为学习模型确定所述网页显示组件对应的注入策略。
10.如权利要求7所述的方法,其特征在于,所述注入策略为第一策略,所述向所述网页注入内容提取模块和信息反馈模块包括:
在所述应用程序的用户界面显示后,所述操作系统调用所述网页显示组件的接口以向所述网页注入所述内容提取模块和所述信息反馈模块;其中,所述内容提取模块和所述信息反馈模块被注入到所述网页的源代码或者所述网页对应的网页运行时中。
11.如权利要求7所述的方法,其特征在于,所述注入策略为第二策略,所述向所述网页注入内容提取模块和信息反馈模块包括:
在所述应用程序的用户界面创建时,所述操作系统通过调用所述网页显示组件的接口以向所述网页注入所述信息反馈模块;
在所述应用程序的用户界面显示后,所述操作系统通过调用所述网页显示组件的接口以向所述网页注入所述内容提取模块;其中,所述内容提取模块和所述信息反馈模块被注入到所述网页的源代码或者所述网页对应的网页运行时中。
12.如权利要求1至11任一项所述的方法,其特征在于,所述内容提取模块从所述网页中提取所述第一网页坐标对应的内容包括:
所述内容提取模块遍历所述网页的文档对象模型(DOM)树以确定对应于所述第一网页坐标的目标节点;
根据所述目标节点的显示属性以及所述目标节点周围的节点的显示属性,提取所述目标节点对应的内容以及所述目标节点周围的节点对应的内容。
13.如权利要求1至11任一项所述的方法,其特征在于,所述内容提取模块从所述网页中提取所述第一网页坐标对应的内容包括:
所述内容提取模块遍历所述网页的文档对象模型(DOM)树以确定对应于所述第一网页坐标的目标节点;
若所述目标节点对应的内容中包含的空格字符的数量大于设定阈值,则提取所述内容中位于所述空格字符之前的部分内容,或者位于所述空格字符之后的部分内容。
14.如权利要求1至11任一项所述的方法,其特征在于,所述内容提取模块从所述网页中提取所述第一网页坐标对应的内容包括:
所述内容提取模块遍历所述网页的文档对象模型(DOM)树以确定对应于所述第一网页坐标的目标节点;
若所述目标节点对应的内容中包含的字符的数量大于设定阈值,则提取所述内容中靠近所述第一网页坐标的设定长度的字符。
15.如权利要求1至11任一项所述的方法,其特征在于,所述网页事件为自定义网页事件,且所述自定义网页事件是由所述操作系统派发的自定义系统事件转换后得到的。
16.如权利要求15所述的方法,其特征在于,所述自定义系统事件是由用户的操作触发的,或者是由所述操作系统模拟的。
17.如权利要求1至11任一项所述的方法,其特征在于,还包括:移除所述内容提取模块和所述信息反馈模块。
18.如权利要求1至11任一项所述的方法,其特征在于,所述应用程序的标识为所述应用程序的安装包的标识,所述网页显示组件的标识为所述网页显示组件的签名信息。
19.如权利要求1至11任一项所述的方法,其特征在于,所述内容提取模块和所述信息反馈模块为JavaScript(JS)代码或程序。
20.如权利要求19所述的方法,其特征在于,所述内容提取模块和所述信息反馈模块运行于JS执行环境中;所述信息反馈模块将所述内容提取模块提取的所述内容传送给所述操作系统包括:所述信息反馈模块通过JS Binding机制将提取的所述内容传回所述网页执行环境,所述网页执行环境以JNI的方式将所述内容传送给运行于系统runtime的系统服务。
21.一种终端设备,其特征在于,包括:
识别模块,用于识别应用程序的网页显示组件,所述网页显示组件被所述应用程序用于加载和显示用户界面中包含的网页;
注入模块,用于通过所述网页显示组件的接口向所述网页注入内容提取模块和信息反馈模块;所述识别模块和所述注入模块包含在所述终端设备的操作系统中;
所述内容提取模块用于,根据所述网页显示组件派发的网页事件,从所述网页中提取第一网页坐标对应的内容,所述网页事件包含所述第一网页坐标;
所述信息反馈模块,用于将所述内容提取模块提取的所述内容传送给所述终端设备的操作系统。
22.如权利要求21所述的终端设备,其特征在于,所述识别模块具体用于,根据所述用户界面包含的至少一个控件的特征,识别出与特征模型匹配的控件,所述识别出的控件为所述应用程序的网页显示组件,其中,所述至少一个控件的特征包括:所述至少一个控件的功能特征和行为特征中的至少一种;所述特征模型表征多种网页显示组件的共同特征。
23.如权利要求22所述的终端设备,其特征在于,所述至少一个控件的功能特征包括所述至少一个控件的接口功能特征,所述接口功能特征表征所述至少一个控件的接口的功能;所述特征模型包括功能模型,所述功能模型表征网页显示组件的必要功能,所述必要功能包括:页面加载、页面刷新、历史管理、地址导航中的至少一种;所述识别模块具体用于,从所述至少一个控件中识别出接口功能特征与所述功能模型匹配度最高的控件。
24.如权利要求22所述的终端设备,其特征在于,所述至少一个控件的行为特征包括所述至少一个控件的渲染特征,所述渲染特征表征所述至少一个控件执行的渲染操作的特征;所述特征模型包括渲染模型,所述渲染模型表征渲染网页需要完成的绘制操作的特征,所述绘制操作的特征包括:绘制方式、绘制内容、绘制坐标中的至少一种;所述识别模块具体用于,从所述至少一个控件中识别出渲染特征与所述渲染模型匹配度最高的控件。
25.如权利要求21所述的终端设备,其特征在于,所述识别模块具体用于,根据所述应用程序的标识,从预先配置的第一数据库中查询所述应用程序的网页显示组件的标识,所述第一数据库存储有所述应用程序的标识与所述应用程序的网页显示组件的标识的对应关系;从所述用户界面包含的至少一个控件中,确定标识与所述网页显示组件的标识对应的控件,确定的所述控件为所述应用程序的网页显示组件;其中,所述至少一个控件包括所述应用程序的网页显示组件。
26.如权利要求21所述的终端设备,其特征在于,还包括:
确定模块,用于在所述应用程序安装时,或者所述应用程序的用户界面创建时,确定注入策略,所述注入策略与注入所述内容提取模块和所述信息反馈模块的时机相关;其中所述注入策略包括:第一策略和第二策略。
27.如权利要求26所述的终端设备,其特征在于,所述确定模块具体用于,根据所述应用程序的标识或者所述网页显示组件的标识,查询第二数据库,以确定所述网页显示组件对应的注入策略;所述第二数据库存储有至少一个应用程序的标识、至少一个网页显示组件的标识以及所述至少一种注入策略的对应关系。
28.如权利要求26所述的终端设备,其特征在于,所述注入策略为第一策略,所述注入模块具体用于,在所述应用程序的用户界面显示后,调用所述网页显示组件的接口以向所述网页注入所述内容提取模块和所述信息反馈模块;其中,所述内容提取模块和所述信息反馈模块被注入到所述网页的源代码或者所述网页对应的网页运行时中。
29.如权利要求26所述的终端设备,其特征在于,所述注入策略为第二策略,所述注入模块具体用于,在所述应用程序的用户界面创建时,调用所述网页显示组件的接口以向所述网页注入所述信息反馈模块;在所述应用程序的用户界面显示后,调用所述网页显示组件的接口以向所述网页注入所述内容提取模块;其中,所述内容提取模块和所述信息反馈模块被注入到所述网页的源代码或者所述网页对应的网页运行时中。
30.如权利要求21至29任一项所述的终端设备,其特征在于,所述内容提取模块具体用于,遍历所述网页的文档对象模型(DOM)树以确定对应于所述第一网页坐标的目标节点;根据所述目标节点的显示属性以及所述目标节点周围的节点的显示属性,提取所述目标节点对应的内容以及所述目标节点周围的节点对应的内容。
31.如权利要求21至29任一项所述的终端设备,其特征在于,所述内容提取模块具体用于,遍历所述网页的文档对象模型(DOM)树以确定对应于所述第一网页坐标的目标节点;若所述目标节点对应的内容中包含的空格字符的数量大于设定阈值,则提取所述内容中位于所述空格字符之前的部分内容,或者位于所述空格字符之后的部分内容。
32.如权利要求21至29任一项所述的终端设备,其特征在于,所述内容提取模块具体用于,遍历所述网页的文档对象模型(DOM)树以确定对应于所述第一网页坐标的目标节点;若所述目标节点对应的内容中包含的字符的数量大于设定阈值,则提取所述内容中靠近所述第一网页坐标的设定长度的字符。
33.如权利要求21至29任一项所述的终端设备,其特征在于,所述网页事件为自定义网页事件,且所述自定义网页事件是由所述操作系统派发的自定义系统事件转换后得到的。
34.如权利要求21至29任一项所述的终端设备,其特征在于,所述内容提取模块和所述信息反馈模块为JavaScript代码或程序。
35.一种终端设备,包括处理器、存储器及存储在所述存储器上并可被所述处理器执行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至20中任一项所述方法的步骤。
CN201710953935.5A 2017-10-13 2017-10-13 网页内容提取方法以及终端设备 Active CN110020292B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201710953935.5A CN110020292B (zh) 2017-10-13 2017-10-13 网页内容提取方法以及终端设备
PCT/CN2018/109757 WO2019072201A1 (zh) 2017-10-13 2018-10-11 网页内容提取方法以及终端设备
KR1020207008858A KR102436987B1 (ko) 2017-10-13 2018-10-11 웹페이지 콘텐츠를 추출하기 위한 방법 및 단말 장치
EP18866989.9A EP3667520A4 (en) 2017-10-13 2018-10-11 WEB PAGE CONTENT EXTRACTION PROCESS AND TERMINAL DEVICE
US16/847,168 US11403364B2 (en) 2017-10-13 2020-04-13 Method and terminal device for extracting web page content
US17/849,192 US20220318336A1 (en) 2017-10-13 2022-06-24 Method and Terminal Device for Extracting Web Page Content

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710953935.5A CN110020292B (zh) 2017-10-13 2017-10-13 网页内容提取方法以及终端设备

Publications (2)

Publication Number Publication Date
CN110020292A CN110020292A (zh) 2019-07-16
CN110020292B true CN110020292B (zh) 2020-07-28

Family

ID=66100381

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710953935.5A Active CN110020292B (zh) 2017-10-13 2017-10-13 网页内容提取方法以及终端设备

Country Status (5)

Country Link
US (2) US11403364B2 (zh)
EP (1) EP3667520A4 (zh)
KR (1) KR102436987B1 (zh)
CN (1) CN110020292B (zh)
WO (1) WO2019072201A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110633127A (zh) 2018-06-25 2019-12-31 华为技术有限公司 一种数据处理方法及相关设备
CN110806905B (zh) * 2019-10-30 2022-09-30 网易(杭州)网络有限公司 用户页面处理方法与装置、电子设备、存储介质
CN110929205A (zh) * 2019-11-13 2020-03-27 贝壳技术有限公司 用于加载网页中的控件的方法及装置
CN111090431B (zh) * 2019-11-29 2024-02-23 亚信科技(南京)有限公司 一种数据处理方法及装置
CN111258569A (zh) * 2020-01-09 2020-06-09 卓望数码技术(深圳)有限公司 网页组件编辑方法、装置、设备和计算机可读存储介质
CN111274574B (zh) * 2020-01-16 2022-10-25 恩亿科(北京)数据科技有限公司 网页事件防抖方法、装置、服务器及计算机可读存储介质
US20230010433A1 (en) * 2020-05-20 2023-01-12 Prime Strategy Co., Ltd. Automatic high-speed display control method for web content
CN111913708B (zh) * 2020-08-07 2024-02-27 广州虎牙科技有限公司 界面显示方法、装置、存储介质及电子设备
US11556223B2 (en) * 2020-08-27 2023-01-17 Ebay Inc. Automatic feedback system using visual interactions
KR102570477B1 (ko) * 2020-12-28 2023-09-04 주식회사 에스투더블유 웹 페이지에서 자동으로 사용자 식별 객체 획득하는 방법
CN114691187A (zh) * 2020-12-29 2022-07-01 北京嘀嘀无限科技发展有限公司 节点注册方法、装置、计算机设备和存储介质
WO2022177345A1 (ko) * 2021-02-18 2022-08-25 주식회사 인포플라 인공지능 기반으로 화면 정보를 인지하여 화면 상의 오브젝트에 이벤트를 발생시키는 방법 및 시스템
CN113515767B (zh) * 2021-08-02 2024-01-23 杭州粉象家科技有限公司 一种基于混合模式移动应用的接口请求管理方法及装置
CN113836465A (zh) * 2021-09-17 2021-12-24 深圳追一科技有限公司 控件显示方法、系统、计算机设备和存储介质
US11829783B2 (en) * 2021-10-15 2023-11-28 Vim Inc. Dynamic loading of an extending application
CN114356477B (zh) * 2021-12-22 2024-04-09 青岛海信移动通信技术有限公司 一种终端设备和应用程序调用方法
CN114429106B (zh) * 2021-12-29 2023-04-07 北京百度网讯科技有限公司 页面信息处理方法、装置、电子设备和存储介质
KR20230151678A (ko) * 2022-04-26 2023-11-02 쿠팡 주식회사 전자 장치 및 그의 동작 방법
KR102596921B1 (ko) * 2022-09-28 2023-10-31 한수진 고객에게 웹 앱 디자인 서비스를 제공하는 방법 및 서버
CN116226566B (zh) * 2023-03-07 2024-01-23 杭州星锐网讯科技有限公司 一种渲染内嵌客户端界面至网页的方法和系统
CN117009694A (zh) * 2023-08-01 2023-11-07 斑马工程咨询有限公司 一种互联网网页显示管理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701164A (zh) * 2015-12-30 2016-06-22 广东欧珀移动通信有限公司 一种网页点击量的统计方法和装置
CN106897215A (zh) * 2017-01-20 2017-06-27 华南理工大学 一种基于WebView网页加载性能及用户行为流数据采集的方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685229B1 (en) * 2001-05-15 2010-03-23 Adobe Systems Incorporated System and method for displaying server side code results in an application program
US7421652B2 (en) * 2002-10-31 2008-09-02 Arizan Corporation Methods and apparatus for summarizing document content for mobile communication devices
US8707167B2 (en) * 2006-11-15 2014-04-22 Ebay Inc. High precision data extraction
CN101937438B (zh) 2009-06-30 2013-06-05 富士通株式会社 网页内容提取方法和装置
US9208249B2 (en) * 2009-09-30 2015-12-08 Microsoft Technology Licensing, Llc Profiler for page rendering
US20150074561A1 (en) * 2010-05-07 2015-03-12 Google Inc. Customizable themes for browsers and web content
US8434001B2 (en) 2010-06-03 2013-04-30 Rhonda Enterprises, Llc Systems and methods for presenting a content summary of a media item to a user based on a position within the media item
CN102663023B (zh) 2012-03-22 2014-09-17 浙江盘石信息技术有限公司 一种提取网页内容的实现方法
CN102693280B (zh) * 2012-04-28 2014-08-13 广州市动景计算机科技有限公司 网页浏览方法、WebApp框架、执行JavaScript方法及装置、移动终端
CN104077273A (zh) * 2013-03-27 2014-10-01 腾讯科技(深圳)有限公司 一种对网页内容抽取的方法及装置
CN103246699B (zh) * 2013-04-01 2017-06-27 钱咸升(北京)网络科技有限公司 一种基于浏览器的数据访问控制方法和装置
US20140359413A1 (en) * 2013-05-28 2014-12-04 Tencent Technology (Shenzhen) Company Limited Apparatuses and methods for webpage content processing
CN104951326B (zh) 2014-03-31 2020-06-30 腾讯科技(深圳)有限公司 网页访问方法及装置
US9348980B2 (en) * 2014-07-10 2016-05-24 Paul Fergus Walsh Methods, systems and application programmable interface for verifying the security level of universal resource identifiers embedded within a mobile application
CN105204806A (zh) * 2015-09-20 2015-12-30 杭州电子科技大学 移动终端网页个性化显示方法及装置
US10650073B1 (en) * 2017-07-17 2020-05-12 Foundrydc, Llc Methods and systems for media element optimization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701164A (zh) * 2015-12-30 2016-06-22 广东欧珀移动通信有限公司 一种网页点击量的统计方法和装置
CN106897215A (zh) * 2017-01-20 2017-06-27 华南理工大学 一种基于WebView网页加载性能及用户行为流数据采集的方法

Also Published As

Publication number Publication date
US11403364B2 (en) 2022-08-02
KR20200043467A (ko) 2020-04-27
KR102436987B1 (ko) 2022-08-25
EP3667520A4 (en) 2020-09-02
CN110020292A (zh) 2019-07-16
US20220318336A1 (en) 2022-10-06
US20200242186A1 (en) 2020-07-30
EP3667520A1 (en) 2020-06-17
WO2019072201A1 (zh) 2019-04-18

Similar Documents

Publication Publication Date Title
CN110020292B (zh) 网页内容提取方法以及终端设备
TWI690812B (zh) 頁面元件動態佈局方法、裝置及客戶端
US20190251143A1 (en) Web page rendering method and related device
US10754917B2 (en) Method and system for displaying customized webpage on double webview
KR101790190B1 (ko) 애플리케이션 시나리오 식별 방법, 전력 소비 관리 방법, 장치 및 단말기 장치
CN105302811B (zh) 浏览器页面跳转方法及装置
US10152660B2 (en) Smart card read/write method and apparatus
CN108287918B (zh) 基于应用页面的音乐播放方法、装置、存储介质和电子设备
CN108549567B (zh) 动画显示方法、装置、终端、服务器及存储介质
US11930096B2 (en) Systems and methods for rendering interactive web pages
CN108319474B (zh) 一种页面信息生成方法、装置和设备
CN110780939B (zh) 加载资源文件的方法、装置、计算机设备及存储介质
WO2022127743A1 (zh) 内容显示方法及终端设备
CN108563476B (zh) 应用程序运行方法、装置、存储介质及电子设备
CN105095289A (zh) 网页访问方法及装置
EP2998885A1 (en) Method and device for information search
CN108268298B (zh) 桌面图标的生成方法、装置、存储介质及电子设备
WO2020093613A1 (zh) 页面数据的处理方法及装置、存储介质、计算机设备
CN110088750B (zh) 在静态网页中提供场境功能的方法和系统
CN116149639A (zh) 一种组件开发的方法、装置、电子设备和存储介质
CN113591000A (zh) 一种浏览器引擎的切换方法和装置及设备
CN114020589A (zh) 埋点处理方法、装置、计算机设备和存储介质
KR102061682B1 (ko) 클라우드 브라우저 기반의 사용자 활동 분석 방법 및 이를 위한 장치
CN115525305A (zh) 数据处理、应用启动方法、装置、计算机设备和存储介质
CN117827165A (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