CN105426500B - 网页脚本动态生成的链接的提取方法及装置 - Google Patents

网页脚本动态生成的链接的提取方法及装置 Download PDF

Info

Publication number
CN105426500B
CN105426500B CN201510831032.0A CN201510831032A CN105426500B CN 105426500 B CN105426500 B CN 105426500B CN 201510831032 A CN201510831032 A CN 201510831032A CN 105426500 B CN105426500 B CN 105426500B
Authority
CN
China
Prior art keywords
layer architecture
link
sentence
constant
variable
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
CN201510831032.0A
Other languages
English (en)
Other versions
CN105426500A (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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510831032.0A priority Critical patent/CN105426500B/zh
Publication of CN105426500A publication Critical patent/CN105426500A/zh
Application granted granted Critical
Publication of CN105426500B publication Critical patent/CN105426500B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]

Abstract

本发明提供了一种网页脚本动态生成的链接的提取方法及装置,该方法包括:获取网页中的脚本代码;根据所述脚本代码的语言规则对所述脚本语言进行分割,将所述脚本语言分割为至少一个独立语句;对各独立语句进行链接特征分析,提取其中存在的链接。采用本发明的方法,保证了链接抽取的流畅度及完整度,同时不会占用较大的工作资源,资源耗费低,可行性高。

Description

网页脚本动态生成的链接的提取方法及装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种网页脚本动态生成的链接的提取方法及装置。
背景技术
搜索引擎的网络蜘蛛是通过网页的链接地址来寻找网页的,先从网站某一个页面开始,读取页面内容,并提取网页中的统一资源定位符(Uniform Resource Locator,简称URL),然后通过这些URL链接地址,寻找下一个网页,按照此方法循环下去。通常情况下,URL链接存在于超文本标记语言(HyperText Markup Language,简称HTML)网页的<a>标签的href属性中,网络蜘蛛仅需要遍历HTML网页的所有节点,找出其中<a>标签的href属性即可。但是对于网页中某些程序代码(例如:Java脚本(Javascript)代码)执行后动态生成的URL链接,网络蜘蛛没有更好的方法将其抽取出来。
通常情况下,对于这些动态生成的URL链接,网络蜘蛛先加载浏览器内核引擎,下载完网页后,将网页中的某些程序代码(例如:Javascript代码)在浏览器内核引擎中执行一次,这样就可以得到被修改过的HTML网页,此时,网络蜘蛛可以采用普通链接抽取的方法进行链接抽取。但是,该解决方法存在以下缺点:
程序代码(例如:Javascript代码)在浏览器内核引擎执行后,生成的链接不一定会表现在修改过的HTML网页中,这种情况下网络蜘蛛就抽取不到该链接地址。此外,按照该方法进行链接抽取,需要将某些程序代码逐一执行,会占用较大的工作资源,尤其是代码量较大的情况下,资源耗费更多,可行性低。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种网页脚本动态生成的链接的提取方法及装置。
基于本发明的一个方面,提供了一种网页脚本动态生成的链接的提取方法,包括:
获取网页中的脚本代码;
根据所述脚本代码的语言规则对所述脚本语言进行分割,将所述脚本语言分割为至少一个独立语句;
对各独立语句进行链接特征分析,提取其中存在的链接。
可选地,所述对各独立语句进行链接特征分析,包括:
对各独立语句的架构进行解析,获取各层架构中的链接特征参数。
可选地,独立语句使用嵌入函数实现多层架构。
可选地,获取各层架构中的链接特征参数,包括:
获取当前层架构中的变量和/或常量;
根据设定规则对所述当前层架构中的变量和/或常量进行计算,得到计算结果;
对所述计算结果进行链接特征分析,以确定其中是否存在链接特征。
可选地,按如下步骤获取当前层架构中的变量:
检测当前层架构中是否存在var name=value型或其变种;
若是,则获取var name=value型或其变种对应的变量;
若否,则确定当前层架构中不存在变量。
可选地,按如下步骤获取当前层架构中的常量:
获取当前层架构中由单引号和/或双引号限定的所有常量。
可选地,若常量两侧不紧邻加号,则该常量本身具备链接特征。
可选地,根据所述脚本代码的语言规则对所述脚本语言进行分割,包括:
根据所述语言规则确定各独立语句的分割点;
使用所述语言规则中设定的分隔符在所述分割点对所述脚本语言进行分割。
可选地,所述分隔符包括分号。
可选地,对各独立语句进行链接特征分析,提取其中存在的链接,包括:
查找网页各节点的<a>标签中的href属性;
从所述href属性中提取链接。
基于本发明的另一个方面,提供了一种网页脚本动态生成的链接的提取装置,包括:
获取模块,适于获取网页中的脚本代码;
分割模块,适于根据所述脚本代码的语言规则对所述脚本语言进行分割,将所述脚本语言分割为至少一个独立语句;
提取模块,适于对各独立语句进行链接特征分析,提取其中存在的链接。
可选地,所述提取模块还适于:
对各独立语句的架构进行解析,获取各层架构中的链接特征参数。
可选地,独立语句使用嵌入函数实现多层架构。
可选地,所述提取模块还适于:
获取当前层架构中的变量和/或常量;
根据设定规则对所述当前层架构中的变量和/或常量进行计算,得到计算结果;
对所述计算结果进行链接特征分析,以确定其中是否存在链接特征。
可选地,所述提取模块还适于按如下步骤获取当前层架构中的变量:
检测当前层架构中是否存在var name=value型或其变种;
若是,则获取var name=value型或其变种对应的变量;
若否,则确定当前层架构中不存在变量。
可选地,所述提取模块还适于按如下步骤获取当前层架构中的常量:
获取当前层架构中由单引号和/或双引号限定的所有常量。
可选地,若常量两侧不紧邻加号,则该常量本身具备链接特征。
可选地,所述分割模块还适于:
根据所述语言规则确定各独立语句的分割点;
使用所述语言规则中设定的分隔符在所述分割点对所述脚本语言进行分割。
可选地,所述分隔符包括分号。
可选地,所述提取模块还适于:
查找网页各节点的<a>标签中的href属性;
从所述href属性中提取链接。
按照本发明实施例中的方法,根据脚本代码的语言规则对脚本语言进行分割,被分割的语句通常是完整的独立语句,避免随便分割所导致的语句不完整,不完整的语句会人为造成解析困难,也不会出现语句中的有效部分误中断的问题,例如语句中的链接被分割开,因此,独立语句的分割保证了链接提取的流畅度,另外,对脚本代码进行分割,对分割得到的独立语句进行链接特征提取,不会出现链接提取疏漏的情况,保证了链接提取的完整度。此外,本发明实施例对各独立语句进行链接特征分析,仅仅是将每个独立语句中包含链接特征的代码按照设定的处理方法抽取出来,相对于现有技术中提供的将各独立语句中的代码一一执行后再抽取链接的技术方案,本发明实施例提供的方法无须将相应代码一一执行,占用更少的工作资源,能够极大缩短链接提取的时间,并且,对执行脚本代码的终端而言,无须执行代码也避免了因代码量过大造成的系统负载过重所导致的终端系统崩溃等情况。因此,本发明实施例采用的链接提取方法相对于现有技术而言,资源耗费低,可行性高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的网页脚本动态生成的链接的提取方法的处理流程图;
图2示出了根据本发明一个实施例的获取独立语句的语句架构中的链接特征参数的一种处理流程图;
图3示出了根据本发明一个实施例的Javascript代码动态生成的链接的提取方法的处理流程图;以及
图4示出了根据本发明一个实施例的网页脚本动态生成的链接的提取装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提供了一种网页脚本动态生成的链接的提取方法。图1示出了根据本发明一个实施例的网页脚本动态生成的链接的提取方法的处理流程图。参见图1,该方法至少包括以下步骤S102至步骤S106。
首先执行步骤S102,获取网页中的脚本代码。
随后执行步骤S104,获取的脚本代码的语言规则对脚本语言进行分割,将脚本语言分割为至少一个独立语句。
脚本代码在编写的过程中会按照一定的语言规则进行,本发明实施例需要按照编写过程中的语言规则将获取的脚本代码进行分割,即将网页后台程序对应的脚本代码分割成独立的语句。根据语言规则对脚本代码进行分割,被分割后的语句通常是完整的语句,避免随便分割所导致的语句不完整,不完整的语句会人为造成解析困难,如果其中的链接也被分割开,那么会进一步增加链接提取的困难度。因此,本发明实施例采用了脚本代码所对应的语言规则进行划分,分割结果为完整的独立语句,不会出现语句中的有效部分误中断的问题,保证解析的流畅度。
最后执行步骤S106,对各独立语句进行链接特征分析,提取其中存在的链接。
本发明实施例中需要对步骤S104分割得到的独立语句进行链接特征分析,即分析每个独立语句是否存在统一资源定位符(Uniform Resource Locator,简称URL),若存在URL特征,则提取出其中的链接。具体地,以Javascript代码为例,分析分割Javascript代码后得到的独立语句,查看是否存在URL特征,若存在,则提取出该链接。本发明实施例对各独立语句进行链接特征分析,仅仅是将每个独立语句中包含链接特征的代码按照设定的处理方法抽取出来,相对于现有技术中提供的将各独立语句中的代码一一执行后再抽取链接的技术方案,本发明实施例提供的方法无须将相应代码一一执行,占用更少的工作资源,能够极大缩短链接提取的时间,并且,对执行脚本代码的终端而言,无须执行代码也避免了因代码量过大造成的系统负载过重所导致的终端系统崩溃等情况。因此,本发明实施例采用的链接提取方法相对于现有技术而言,资源耗费低,可行性高。
综上可知,按照本发明实施例中的方法,根据脚本代码的语言规则对脚本语言进行分割,被分割的语句通常是完整的独立语句,避免随便分割所导致的语句不完整,不完整的语句会人为造成解析困难,也不会出现语句中的有效部分误中断的问题,例如语句中的链接被分割开,因此,独立语句的分割保证了链接提取的流畅度。另外,对脚本代码进行分割,对分割得到的独立语句进行链接特征提取,不会出现链接提取疏漏的情况,保证了链接提取的完整度。此外,本发明实施例对各独立语句进行链接特征分析,仅仅是将每个独立语句中包含链接特征的代码按照设定的处理方法抽取出来,相对于现有技术中提供的将各独立语句中的代码一一执行后再抽取链接的技术方案,本发明实施例提供的方法无须将相应代码一一执行,占用更少的工作资源,能够极大缩短链接提取的时间,并且,对执行脚本代码的终端而言,无须执行代码也避免了因代码量过大造成的系统负载过重所导致的终端系统崩溃等情况。因此,本发明实施例采用的链接提取方法相对于现有技术而言,资源耗费低,可行性高。
在本发明的一个优选实施例中,根据脚本代码的语言规则对脚本语言进行分割,至少包括以下步骤:
步骤1、根据语言规则确定各独立语句的分割点;
步骤2、使用语言规则中设定的分隔符在分割点对该脚本语言进行分割。
需要说明地是,分隔符可根据编写网页的程序代码的语言规则设定的具体符号而定,例如分号、逗号、破折号等等。优选地,考虑到代码通常使用分号作为独立语句的分隔符,本实施例也优选分号作为分隔符。
具体地,利用Java编写网页的程序代码时,每一个语句以分号作为结束,因此本发明实施例可以利用分号作为分割点,对Javascript代码进行分割,以分号作为分隔符,将获取的Javascript代码从开头部分进行查找。一旦出现分号,可以将分号之前的脚本代码作为一个独立的语句,然后继续查找。再次出现分号时,将上次紧邻出现的分号和本次查找到的分号之间的Javascript代码作为一个独立的语句,按照此规则,依次查找并分割,直至进行到获取的Javascript代码的末尾,这样会将获取的Javascript代码分割成至少一个独立语句。
按照语言规则对脚本代码进行分割后,在本发明的一个优选实施例中,对分割得到的独立语句进行链接特征提取,至少包括以下步骤:对各独立语句的架构进行解析,获取各层架构中的链接特征参数。例如,按照语言规则对脚本代码进行分割,将脚本代码分割为三个独立语句,那么,进一步,本发明实施例依次对语句1-3进行链接特征提取。
分割得到的各独立语句具备相同或不同的语句架构,例如,语句1可能为嵌套式语句,其中内嵌了其他语句,语句2为选择性语句,语句3为变量计算类语句等等。因此,为对各独立语句进行链接特征提取,还需要对独立语句的架构进行解析。
需要说明地是,在本发明的一个优选实施例中,独立语句可以通过使用嵌入函数实现多层架构。具体地,Java编写网页的程序语句中会使用document.write()或者document.writeln()等嵌入函数实现多层架构,若分割得到的独立语句中存在document.write()或者document.writeln()句型,需要将该句型括号中的内容提取出来,并发送至计算器进行处理,计算器对括号中的内容进行运算,计算是否存在URL特征,若存在,则可以按照普通网页抽取链接的方法抽取链接。
本发明根据独立语句的各层架构进一步提取链接特征参数的实施方式还有很多,例如变量/常量计算机制,通过对某一独立语句的架构中的变量/变量进行计算判断该独立语句中是否存在链接特征参数。图2示出了根据本发明一个实施例的获取独立语句的语句架构中的链接特征参数的一种处理流程图。参见图2,该方法至少包括以下步骤S202至步骤S206。
首先执行步骤S202,获取当前层架构中的变量和/或常量。检查独立语句解析出的各层架构中是否存在变量或常量,若存在,则获取该变量或常量。
然后执行步骤S204,根据设定规则对当前层架构中的变量和/或常量进行计算,得到计算结果。将获取的变量或常量按照设定的规则进行计算,例如,将变量发送至计算器进行计算或者对常量在代码中位置两侧的符号进行判断,得到计算结果。
最后执行步骤S206,对计算结果进行链接特征分析,以确定其中是否存在链接特征。
需要说明地是,本发明实施例提供的变量/常量计算机制均基于独立语句的当前层架构,若独立语句为多层架构(例如前文提及的通过嵌入函数实现语句的多层架构),则首先需要将独立语句分解至层级别,即,每个独立的层可以被视为一个独立语句,进而对各个独立的层架构进行上述链接特征提取的计算。若独立语句为单层架构,则可以直接使用变量/常量计算机制对其进行计算。
在本发明的一个优选实施例中,步骤S202提及的当前层架构中的变量,可至少按照以下步骤进行获取。
步骤1、检测当前层架构中是否存在var name=value型或其变种。
步骤2、若是,则获取var name=value型或其变种对应的变量;若否,则确定当前层架构中不存在变量。
具体地,检测Javascript独立语句的当前层架构中是否存在var name=value型或其变种语句(例如:var name+=value),若存在,则将该类型语句中的name,value值发送至计算器,对语句中的name,value值进行运算,确定是否存在链接特征。
相对应的,在独立语句的当前层架构中除了包括变量外,还包括常量。步骤S202提及需要获取当前层架构中的常量,本发明实施例提供了一种优选的常量获取方式,可按照当前层架构中由单引号或者双引号限定的规则获取所有常量。若某代码在当前层架构下的位置两侧有单引号或者双引号进行限定,则认为该代码为常量,并进行获取,进行下一步链接特征分析。具体地,以Javascript程序代码为例,当前层架构中存在由单引号限定的代码‘path’,或者存在由双引号限定的代码“path”,则确定path为常量。
进一步,按照上文中的规则获取的常量,可至少按照以下步骤进行链接特征分析。
若常量两侧不紧邻加号,则该常量本身具备链接特征。具体地,检查该常量两侧是否紧邻加号,如果不紧邻,则常量具备URL特征,并抽取该链接,例如“path”,path两侧不紧邻加号,则path具备URL特征,确定path是URL;如果常量两侧紧邻加号,将由加号相连的常量交由计算器进行运算,确定该常量是否存在URL特征,例如“+path+”,path两侧紧邻加号,则需要将其交由计算器进行运算,计算结果若具备URL特征,进行链接抽取。
需要注意地是,不管是将嵌入函数语句括号中的内容发送至计算器进行链接特征计算,还是对当前层架构中获取的常量与变量发送至计算器进行计算,这些计算可以选择逐步进行,也可以选择同时进行。
同时,在本发明的一个优选实施例中,网页还可按照普通抽链方法抽取链接,即对各独立语句进行链接特征分析,提取其中存在的链接,查找网页各节点的<a>标签中的href属性,从href属性中提取链接。
需要说明地是,本发明实施例中采用的链接抽取方法可以和普通抽链方法相结合,对于普通抽链方法不能获取的链接,可以按照本发明实施例中的方法进行抽取,不会出现链接抽取疏漏的情况,保证了链接抽取的完整度。
下面,以Javascript程序代码作为本发明一个具体实施例,进一步说明网页脚本动态生成的链接的提取方法的处理流程及按照本发明方法进行链接抽取的有益效果。
在本发明实施例执行之初,需要初始化一个变量字典和计算器,变量字典用于存储变量值,例如key-value值,计算器用于对脚本代码语句中常量与变量进行链接特征运算,例如"http://"+host+path,首先计算器检查变量字典中是否存在host、path对应的值,若变量字典中存在host、path对应的值,例如,host="www.so.com",path="/index.php",则host、path具备URL特征,提取该链接,即http://www.so.com/index.php,若变量字典中不存在host或者path,则结果未定义。
图3示出了根据本发明一个实施例的Javascript代码动态生成的链接的提取方法的处理流程图,至少包括以下步骤S302至步骤S322。
首先执行步骤S302,获取后台网页程序中的Javascript代码。
随后执行步骤S304,以分号作为分隔符,对获取的Javascript代码进行分割,分割为至少一个独立语句。将获取的Javascript代码从开始到末尾出现的每两个紧邻分号间的代码作为一个独立语句,这样至少可以分割成一个独立语句。将Javascript代码用分号分割后,形成的是一个完整的语句,避免了随意分割导致的语句不完整,不完整的语句会人为造成解析困难,也避免了将语句中的链接分割开,也不出现链接提取疏漏的情况,保证了链接提取的流畅度和完整度。
然后执行步骤S306,对分割后获取的独立语句进行架构解析。即对获取的Javascript独立语句进一步解析,解析出独立语句的各层架构。
解析出独立语句的各层架构后,需要对每一个独立语句的各层架构进行链接特征分析,执行步骤S308,检查独立语句各层架构中使用嵌入函数。若存在嵌入函数语句,执行步骤S310,将嵌入函数中的代码发送至计算器进行处理,进行链接特征分析。具体地,计算器到变量字典中检查是否存在该代码对应的值,若存在,则存在链接特征,然后抽取链接。执行完步骤S310,继续执行步骤S312。相应地,若独立语句的各层架构中不存在嵌入函数,也要继续执行步骤S312。例如,若Javascript代码解析出的架构中存在document.write()或者document.writeln()句型,需要将该句型括号中的内容提取出来,并发送至计算器进行处理,计算器检查变量字典中是否存在括号中的内容,若存在,则具备URL特征,可以按照普通网页抽取链接的方法抽取链接。
根据独立语句的各层架构提取链接特征参数的实施方式有很多,因此需要进一步执行步骤S312,检查独立语句的各层架构中存在变量。若存在变量,执行步骤S314,将变量发送至计算器计算,对计算结果进行链接特征分析。具体地,检查变量字典中是否存在该变量对应的值,若存在,则具备URL特征,并抽取链接,然后执行步骤S316。相应地,若各层架构中不存在变量,也要继续执行步骤S316。具体地,检测Javascript独立语句的各层架构中是否存在var name=value型或其变种语句(例如:var name+=value),若存在,则将该类型语句中的name,value值发送至计算器,对语句中的name,value值进行运算,若变量字典中存在对应的name,value值,则确定存在URL特征,抽取该链接。若变量字典中不存在的name,value值,计算结束后可以将不存在的name,value值添加至变量字典中,实现变量字典的不断更新。
独立语句的各层架构中的不仅可能包含变量,还有可能包含常量,因此还需要对独立语句的各层架构执行步骤S316,按照单引号或者双引号限定的规则检查存在常量。若存在常量,执行步骤S318检查常量两侧紧邻加号。若常量两侧不紧邻加号,执行步骤S320,确定上述步骤所提及的常量具备URL特征,并根据URL特征抽取链接。若常量两侧紧邻加号,执行步骤S322,将常量交由计算器处理,对其进行链接特征运算,检查变量字典中是否存在该常量对应的值,若存在,则具备URL特征,并抽取链接。例如,当前层架构中存在“path”代码,该代码是由双引号限定的,因此path为常量,需要对它进行链接特征分析,即检查path两侧书否紧邻加号,该常量两侧没有紧邻加号,则path具备URL特征,确定此常量是URL,并抽取该链接;若前层架构中存在“+path+”代码,由于该代码是由双引号限定的,因此path为常量,对它进行链接特征分析,检查path两侧紧邻加号,则需要将其交由计算器进行运算,计算器到变量字典中检查是否存在该常量对应的值,若存在,则计算结果是具备URL特征,并进行链接抽取。
本发明实施例只需要独立语句的各层架构中的嵌入函数句型中的内容、变量及常量发送至计算器,进行链接特征分析,并不需要将代码一一执行,因此占用了较少的资源,可行性高。
需要说明地是,检查独立语句的各层架构中是否使用嵌入函数,还是检查各层架构中是否存在变量,是否存在常量,以上步骤不需要严格按照本发明实施例中的处理步骤进行,还可以按照任意排列组合的顺序执行,或者设定同时进行。
基于同一发明构思,本发明实施例还提供了一种网页脚本动态生成的链接的提取装置。图4示出了根据本发明一个实施例的网页脚本动态生成的链接的提取装置的结构示意图。参见图4,该装置至少包括:
获取模块410,适于获取网页中的脚本代码;
分割模块420,与获取模块410耦合,适于根据脚本代码的语言规则对脚本语言进行分割,将脚本语言分割为至少一个独立语句;
提取模块430,与分割模块420耦合,适于对各独立语句进行链接特征分析,提取其中存在的链接。
在一个优选的实施例中,分割模块420还适于:
根据语言规则确定各独立语句的分割点;
使用语言规则中设定的分隔符在分割点对脚本语言进行分割。
优选地,分隔符包括分号。
在一个优选的实施例中,提取模块430还适于对各独立语句的架构进行解析,获取各层架构中的链接特征参数。
在一个优选的实施例中,独立语句使用嵌入函数实现多层架构。
在一个优选的实施例中,提取模块430还适于:
获取当前层架构中的变量和/或常量;
根据设定规则对当前层架构中的变量和/或常量进行计算,得到计算结果;
对计算结果进行链接特征分析,以确定其中是否存在链接特征。
在一个优选的实施例中,提取模块430还适于按如下步骤获取当前层架构中的变量:
检测当前层架构中是否存在var name=value型或其变种;
若是,则获取var name=value型或其变种对应的变量;
若否,则确定当前层架构中不存在变量。
在一个优选的实施例中,提取模块430还适于按如下步骤获取当前层架构中的常量:
获取当前层架构中由单引号和/或双引号限定的所有常量。
在一个优选的实施例中,若常量两侧不紧邻加号,则该常量本身具备链接特征。
需要注意地是,提取模块430对嵌入函数语句中的内容发送至计算器进行链接特征计算,还是对当前层架构中的常量与变量进行计算,这些计算可以选择逐步进行,也可以选择同时进行。
在本发明的一个优选的实施例中,提取模块430还适于:
查找网页各节点的<a>标签中的href属性;
从href属性中提取链接。
综上,采用本发明实施例提供的网页脚本动态生成的链接的提取装置可以达到如下有益效果:
按照本发明实施例中的链接提取方法及装置,根据脚本代码的语言规则对脚本语言进行分割,被分割的语句通常是完整的独立语句,避免随便分割所导致的语句不完整,不完整的语句会人为造成解析困难,也不会出现语句中的有效部分误中断的问题,例如语句中的链接被分割开,因此,独立语句的分割进一步保证链接提取的流畅度,另外,对脚本代码进行分割,对分割得到的独立语句进行链接特征提取,不会出现链接提取疏漏的情况,保证了链接提取的完整度。此外,本发明实施例对各独立语句进行链接特征分析,仅仅是将每个独立语句中包含链接特征的代码按照设定的处理方法抽取出来,相对于现有技术中提供的将各独立语句中的代码一一执行后再抽取链接的技术方案,本发明实施例提供的方法无须将相应代码一一执行,占用更少的工作资源,能够极大缩短链接提取的时间,并且,对执行脚本代码的终端而言,无须执行代码也避免了因代码量过大造成的系统负载过重所导致的终端系统崩溃等情况。因此,本发明实施例采用的链接提取方法相对于现有技术而言,资源耗费低,可行性高。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网页脚本动态生成的链接的提取装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
基于本发明的一个方面,还公开了:A1、一种网页脚本动态生成的链接的提取方法,包括:
获取网页中的脚本代码;
根据所述脚本代码的语言规则对所述脚本语言进行分割,将所述脚本语言分割为至少一个独立语句;
对各独立语句进行链接特征分析,提取其中存在的链接。
A2、根据A1所述的方法,其中,所述对各独立语句进行链接特征分析,包括:
对各独立语句的架构进行解析,获取各层架构中的链接特征参数。
A3、根据A2所述的方法,其中,独立语句使用嵌入函数实现多层架构。
A4、根据A2或A3所述的方法,其中,获取各层架构中的链接特征参数,包括:
获取当前层架构中的变量和/或常量;
根据设定规则对所述当前层架构中的变量和/或常量进行计算,得到计算结果;
对所述计算结果进行链接特征分析,以确定其中是否存在链接特征。
A5、根据A4所述的方法,其中,按如下步骤获取当前层架构中的变量:
检测当前层架构中是否存在var name=value型或其变种;
若是,则获取var name=value型或其变种对应的变量;
若否,则确定当前层架构中不存在变量。
A6、根据A4所述的方法,其中,按如下步骤获取当前层架构中的常量:
获取当前层架构中由单引号和/或双引号限定的所有常量。
A7、根据A6所述的方法,其中,若常量两侧不紧邻加号,则该常量本身具备链接特征。
A8、根据A1至A7任一项所述的方法,其中,根据所述脚本代码的语言规则对所述脚本语言进行分割,包括:
根据所述语言规则确定各独立语句的分割点;
使用所述语言规则中设定的分隔符在所述分割点对所述脚本语言进行分割。
A9、根据A8所述的方法,其中,所述分隔符包括分号。
A10、根据A1至A9任一项所述的方法,其中,对各独立语句进行链接特征分析,提取其中存在的链接,包括:
查找网页各节点的<a>标签中的href属性;
从所述href属性中提取链接。
基于本发明的另一个方面,还公开了B11、一种网页脚本动态生成的链接的提取装置,包括:
获取模块,适于获取网页中的脚本代码;
分割模块,适于根据所述脚本代码的语言规则对所述脚本语言进行分割,将所述脚本语言分割为至少一个独立语句;
提取模块,适于对各独立语句进行链接特征分析,提取其中存在的链接。
B12、根据B11所述的装置,其中,所述提取模块还适于:
对各独立语句的架构进行解析,获取各层架构中的链接特征参数。
B13、根据B12所述的装置,其中,独立语句使用嵌入函数实现多层架构。
B14、根据B11或B12所述的装置,其中,所述提取模块还适于:
获取当前层架构中的变量和/或常量;
根据设定规则对所述当前层架构中的变量和/或常量进行计算,得到计算结果;
对所述计算结果进行链接特征分析,以确定其中是否存在链接特征。
B15、根据B14所述的装置,其中,所述提取模块还适于按如下步骤获取当前层架构中的变量:
检测当前层架构中是否存在var name=value型或其变种;
若是,则获取var name=value型或其变种对应的变量;
若否,则确定当前层架构中不存在变量。
B16、根据B15所述的装置,其中,所述提取模块还适于按如下步骤获取当前层架构中的常量:
获取当前层架构中由单引号和/或双引号限定的所有常量。
B17、根据B16所述的装置,其中,若常量两侧不紧邻加号,则该常量本身具备链接特征。
B18、根据B11至B17任一项所述的装置,其中,所述分割模块还适于:
根据所述语言规则确定各独立语句的分割点;
使用所述语言规则中设定的分隔符在所述分割点对所述脚本语言进行分割。
B19、根据B18所述的装置,其中,所述分隔符包括分号。
B20、根据B11至B19任一项所述的装置,其中,所述提取模块还适于:
查找网页各节点的<a>标签中的href属性;
从所述href属性中提取链接。

Claims (16)

1.一种网页脚本动态生成的链接的提取方法,包括:
获取网页中的脚本代码;
根据所述脚本代码的语言规则对所述脚本语言进行分割,将所述脚本语言分割为至少一个独立语句;
对各独立语句进行链接特征分析,提取其中存在的链接;
所述对各独立语句进行链接特征分析包括:对各独立语句的架构进行解析,获取各层架构中的链接特征参数;其中,在获取各层架构中的链接特征参数时,获取当前层架构中的变量和/或常量;根据设定规则对所述当前层架构中的变量和/或常量进行计算,得到计算结果;对所述计算结果进行链接特征分析,以确定其中是否存在链接特征。
2.根据权利要求1所述的方法,其中,独立语句使用嵌入函数实现多层架构。
3.根据权利要求1或2所述的方法,其中,按如下步骤获取当前层架构中的变量:
检测当前层架构中是否存在var name=value型或其变种;
若是,则获取var name=value型或其变种对应的变量;
若否,则确定当前层架构中不存在变量。
4.根据权利要求1或2所述的方法,其中,按如下步骤获取当前层架构中的常量:
获取当前层架构中由单引号和/或双引号限定的所有常量。
5.根据权利要求1或2所述的方法,其中,若常量两侧不紧邻加号,则该常量本身具备链接特征。
6.根据权利要求1或2所述的方法,其中,根据所述脚本代码的语言规则对所述脚本语言进行分割,包括:
根据所述语言规则确定各独立语句的分割点;
使用所述语言规则中设定的分隔符在所述分割点对所述脚本语言进行分割。
7.根据权利要求6所述的方法,其中,所述分隔符包括分号。
8.根据权利要求1或2所述的方法,其中,对各独立语句进行链接特征分析,提取其中存在的链接,包括:
查找网页各节点的<a>标签中的href属性;
从所述href属性中提取链接。
9.一种网页脚本动态生成的链接的提取装置,包括:
获取模块,适于获取网页中的脚本代码;
分割模块,适于根据所述脚本代码的语言规则对所述脚本语言进行分割,将所述脚本语言分割为至少一个独立语句;
提取模块,适于对各独立语句进行链接特征分析,提取其中存在的链接;
所述提取模块,还适于对各独立语句的架构进行解析,获取各层架构中的链接特征参数;其中,在获取各层架构中的链接特征参数时,获取当前层架构中的变量和/或常量;根据设定规则对所述当前层架构中的变量和/或常量进行计算,得到计算结果;对所述计算结果进行链接特征分析,以确定其中是否存在链接特征。
10.根据权利要求9所述的装置,其中,独立语句使用嵌入函数实现多层架构。
11.根据权利要求9或10所述的装置,其中,所述提取模块还适于按如下步骤获取当前层架构中的变量:
检测当前层架构中是否存在var name=value型或其变种;
若是,则获取var name=value型或其变种对应的变量;
若否,则确定当前层架构中不存在变量。
12.根据权利要求9或10所述的装置,其中,所述提取模块还适于按如下步骤获取当前层架构中的常量:
获取当前层架构中由单引号和/或双引号限定的所有常量。
13.根据权利要求9或10所述的装置,其中,若常量两侧不紧邻加号,则该常量本身具备链接特征。
14.根据权利要求9或10所述的装置,其中,所述分割模块还适于:
根据所述语言规则确定各独立语句的分割点;
使用所述语言规则中设定的分隔符在所述分割点对所述脚本语言进行分割。
15.根据权利要求14所述的装置,其中,所述分隔符包括分号。
16.根据权利要求9或10所述的装置,其中,所述提取模块还适于:
查找网页各节点的<a>标签中的href属性;
从所述href属性中提取链接。
CN201510831032.0A 2015-11-25 2015-11-25 网页脚本动态生成的链接的提取方法及装置 Active CN105426500B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510831032.0A CN105426500B (zh) 2015-11-25 2015-11-25 网页脚本动态生成的链接的提取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510831032.0A CN105426500B (zh) 2015-11-25 2015-11-25 网页脚本动态生成的链接的提取方法及装置

Publications (2)

Publication Number Publication Date
CN105426500A CN105426500A (zh) 2016-03-23
CN105426500B true CN105426500B (zh) 2019-06-25

Family

ID=55504712

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510831032.0A Active CN105426500B (zh) 2015-11-25 2015-11-25 网页脚本动态生成的链接的提取方法及装置

Country Status (1)

Country Link
CN (1) CN105426500B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227711A (zh) * 2016-07-26 2016-12-14 无锡天脉聚源传媒科技有限公司 一种处理自定义参数的方法及装置
CN106997374A (zh) * 2017-01-05 2017-08-01 深圳大宇无限科技有限公司 深度链接获取方法和装置
CN110096259A (zh) * 2019-03-15 2019-08-06 佛山青藤信息科技有限公司 一种Web页面元素定位方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520796A (zh) * 2009-02-16 2009-09-02 深圳市腾讯计算机系统有限公司 从网页内容中提取统一资源定位符的方法及系统
CN101571860A (zh) * 2008-04-29 2009-11-04 国际商业机器公司 动态网页生成方法和装置、提取结构化数据的方法和装置
CN101640663A (zh) * 2008-07-30 2010-02-03 南京中帕软件有限公司 超文本数据访问接口解析规则

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7210094B2 (en) * 2001-07-11 2007-04-24 International Business Machines Corporation Method and system for dynamic web page breadcrumbing using javascript
CN101751530B (zh) * 2009-12-29 2012-08-22 成都市华为赛门铁克科技有限公司 检测漏洞攻击行为的方法及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571860A (zh) * 2008-04-29 2009-11-04 国际商业机器公司 动态网页生成方法和装置、提取结构化数据的方法和装置
CN101640663A (zh) * 2008-07-30 2010-02-03 南京中帕软件有限公司 超文本数据访问接口解析规则
CN101520796A (zh) * 2009-02-16 2009-09-02 深圳市腾讯计算机系统有限公司 从网页内容中提取统一资源定位符的方法及系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JavaScript引擎在动态网页采集技术中的应用;王映等;《计算机应用》;20040229;第24卷(第2期);第33-36页
一种高效的动态脚本网站有效页面获取方法;夏冰等;《软件学报》;20091231;第20卷;第176-183页
基于JavaScript的交互式动态URL提取的研究;周正吉;《万方数据》;20130628;第一至六章
高效的动态脚本网页关联性挖掘算法研究;谭涛;《电脑知识与技术》;20120531;第8卷(第13期);第3002-3005页

Also Published As

Publication number Publication date
CN105426500A (zh) 2016-03-23

Similar Documents

Publication Publication Date Title
US10684943B2 (en) Generating executable test automation code automatically according to a test case
CN105447099B (zh) 日志结构化信息提取方法及装置
CN106776334B (zh) 基于注释生成测试用例方法及装置
CN105205080B (zh) 冗余文件清理方法、装置和系统
US20150378674A1 (en) Converting numeric-character strings to binary numbers
CN109947637B (zh) 网页兼容性自动化测试方法、装置、设备及介质
CA2969371C (en) System and method for fast and scalable functional file correlation
WO2014114131A1 (en) Method and apparatus for testing browser compatibility
CN104375858B (zh) 多浏览器平台执行javascript脚本的方法及装置
CN105426500B (zh) 网页脚本动态生成的链接的提取方法及装置
CN104331438B (zh) 对小说网页内容选择性抽取方法和装置
US9507761B2 (en) Comparing webpage elements having asynchronous functionality
CN108536489B (zh) 匹配资源环境的方法、装置和计算机可读存储介质
CN106708704A (zh) 一种对崩溃日志进行分类的方法和装置
CN105159686B (zh) 一种网站页面开发方法和装置
CN110851756A (zh) 页面加载方法、装置、计算机可读存储介质及终端设备
CN105373533B (zh) 一种页面链接地址的检测方法、客户端及装置
CN108427580B (zh) 配置对命名重复的检测方法、存储介质和智能设备
CN103139298B (zh) 一种传输网络数据的方法和装置
CN102929948B (zh) 列表页识别系统及方法
CN110232019A (zh) 页面测试方法及相关产品
CN103778181B (zh) 浏览器收藏夹中图标的导入方法及装置
CN102902791B (zh) 网页分类存储系统及方法
CN110892377A (zh) 用于开发Web产品的系统和方法
CN106873982B (zh) 一种基于图形用户界面的软件搜索复用方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220714

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right