具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
正如前述,现有网页去重方案,因去重方案仅针对单一因素进行去重,造成网页采集时浪费大量资源,比如在下载后再对网页去重,因需要下载后才能去重,必然占用大量的采集资源、下载资源、存储资源等,且需要对大量相似网页进行大量重复处理,也占用大量处理资源,又比如在下载前就对URL去重,因仅针对相同URL进行去重,并不能对内容相同或者相似但URL不同的网页进行去重,仍需要花销大量的采集资源、下载资源、存储资源等。因而,现有网页去重很难满足大数据环境应用中,比如千万级别网页的采集应用,如内容爬取应用、搜索引擎应用。
而本说明书实施例中提供的网页去重方法,可采用如图1所示的整体思路:通过将网页的统一资源定位符(URL)和网页的信息指纹相结合,并预先共同去泛化出用于表征相似(相似可指相同或者相似度达到预设阈值)网页的URL的结构规则,即去重规则,然后在采集目标网页前,就利用去重规则对目标网页的URL进行去重匹配,即确定目标网页的URL与去重规则中所表征的URL的结构是否匹配,最后根据匹配结果对目标网页进行相应去重处理,比如当匹配结果为匹配时,可确定出需要采集的目标网页为重复的网页,这时就可放弃采集该目标网页,来有效地避免再采集到重复的网页,又比如,在匹配结果为非匹配,可确定需要采集的目标网页为非重复的网页,这时可采集该目标网页。
本说明书实施例中,去重规则为预先根据已采集网页的URL和已采集网页的信息指纹泛化得到的URL的结构的泛化规则,因而利用这样的去重规则,就可有效地反映出相似网页的共同的URL的结构特征,进而可利用这样的去重规则,在新采集一网页内容前,就能快速地、有效地对目标网页的URL进行去重,从而可将大量与已采集网页相似的相似网页,在采集前就进行有效去重,这样可节约大量采集资源、下载资源、处理资源和存储资源等资源。
以下结合附图,详细说明本申请各实施例提供的技术方案。
本说明书实施例提供一种网页去重方法,如图2所示,可包括以下步骤:
步骤S102、获取目标网页对应的统一资源定位符数据。
具体实施中,可在需要采集网页内容前,先从采集队列(比如URL队列)中获取需要采集的目标网页对应的URL数据。其中,URL数据可预存于URL队列中,比如在需要抓取一网站的网页内容时,可通过网络爬虫爬取目标网页对应的URL数据,还可从网站的网页访问的原始日志中过滤来得到目标网页对应的URL数据,然后将URL数据采用队列方式来存储,以便于后续网页的采集。实施中,可根据实际采集需要,决定所采用的队列形式以及队列中的URL数据,这里对此不作具体限定。
步骤S104、确定所述目标网页对应的统一资源定位符数据是否与预设的去重规则库中的去重规则匹配。
其中,所述去重规则用于表征相似网页的URL的结构规则,且所述去重规则为预先将若干已采集网页的URL数据和已采集网页的信息指纹共同泛化得到,这时泛化所得到的所述去重规则,可采用“保留部分+通配部分”的结构,去表征对应的已采集网页的URL数据,其中保留部分用于表征对应的已采集网页的URL数据中需要共同保留下来的部分,通配部分用于表征对应的已采集网页的URL数据中可保留也可不保留的部分,这样进行匹配时,可将目标网页对应的统一资源定位符数据与保留部分一一匹配,而对应于通配部分的可忽略,即可以不进行匹配;所述相似网页包括网页内容的相似度满足预设阈值的网页,所述信息指纹为根据网页的内容按预设的生成策略生成的指纹,这样即使是URL不同的网页,只要网页内容的相似度满足预设阈值,在按生成策略生成的信息指纹也将相同,进而可将这些信息指纹相同(或信息指纹的相似度达到预设阈值)、但URL不同的网页进行URL的结构进行泛化后,得到能表征这些网页的URL的结构规则(即去重规则)。
具体实施中,在确定所述目标网页的URL数据是否与所述去重规则库中的去重规则匹配时,可根据实际应用需要,匹配的方法可采用基于数据库的URL去重方法,还可采用基于内存的URL去重方法,比如Hash(哈希)方法、MD5(消息摘要算法)方法、Bitmap方法、Bloom filter方法等URL去重方法中的一种或多种,这里不再赘述。
具体实施中,在根据网页的内容生成信息指纹时,通常先对网页的内容进行预处理,比如清洗、特征选择、分词等,然后再按生成策略(即生成算法)生成网页的信息指纹,这里也不再赘述。还有,信息指纹的生成算法可根据实际采集网页的需要进行选择,其中信息指纹的生成算法可包括k-shingle算法、simhash算法、Minhash算法、top k最长句子签名算法等算法中的一种或多种,这里不做具体限定。
步骤S106、根据匹配结果对所述目标网页进行去重处理。
具体实施中,当匹配结果为匹配时,即所述目标网页的URL在去重规则库中存在匹配的去重规则,则可确定出目标网页属于重复的网页,这时可放弃采集该目标网页,反之,当匹配结果为非匹配时,可确定出目标网页为非重复的网页,这时可采集该目标网页。
需要说明的是,这里的重复可包括完全相同或者相似程度达到预设的阈值。
通过上述步骤S102~S106,所述去重规则是结合了已采集网页的URL数据和已采集网页的信息指纹而泛化得到的URL的结构规则,从而可有效地反映出网页的相似情况,进而可在新采集一目标网页的内容前,就可快速地、有效地利用所述去重规则对目标网页的URL进行去重,从而有效地将内容相同或相似的网页在采集前就进行去重,来节约大量采集资源、下载资源、处理资源和存储资源等资源,很好地满足了大数据环境下采集网页内容的应用,比如内容爬取应用、搜索引擎应用。
在一个优选的实施中,在泛化得到所述去重规则时,可通过将URL按以下四个主要的部分进行解析再泛化:协议部分(本发明实施例中也称之为“scheme”)、域名部分(本发明实施例中也称之为“domain”)、路径部分(本发明实施例中也称之为“path”)和查询参数部分(本发明实施例中也称之为“query”)。其中,scheme包括URL中用于表示传输协议的部分,比如http、https;domain部分包括URL中从“//”开始到第一个“/”的部分;path包括URL中从第一个“/”至“?”之间的部分;query包括URL中从“?”之后的部分。
比如URL为:
https://www.facebook.com/farenetwork/photos/pb.55548116239.-2207520000.1525935263./10156314639446240/?type=3。
这时,scheme为“https”,domain为“facebook.com”,path为“farenetwork/photos/pb.55548116239.-2207520000.1525935263./10156314639446240”,query为“type=3”。
具体实施中,如图3所示,泛化得到所述去重规则的步骤可包括:
步骤S202、解析URL,并将解析结果作为对应的统一资源定位符结构规则。其中,统一资源定位符结构规则(即URL结构规则)用于表征解析前的URL的结构。
具体实施中,为便于对获得的URL结构规则进行处理,可按预设的数据结构对每个已采集网页的URL数据进行解析,来获得对应的URL结构规则。例如,从URL数据中获取出scheme、domain、path、query等各个部分的内容,以及获取出各个部分中的每一子部分的内容,甚至将被特殊字符分割的每一部分或每一子部分也获取出来,其中特殊字符包括分隔符和规则符,分隔符可包括“.”、“_”,规则符包括“*”或者“[*]+”。
在一个优选的实施中,可采用如图4所示的数据结构,比如采用class urlP方法,来对每个URL数据进行解析,获取出前述的scheme、domain、path、query等部分的数据,并以解析后的数据生成统一结构的URL结构规则。通过获取出URL中的scheme、domain、path、query等每一部分的内容,然后采用统一的URL结构规则进行表示,这样每个URL均可按照scheme/domain/path[p1,p2,p3...]/query[k=v]的URL结构规则表示,从而基于统一的URL结构规则,可方便后续统计分析和泛化。其中,在urlP中,value可按图中class value方法解析;在path部分中,pn表示path部分中的第n个子部分的内容,记为pn=list<value>表示,n为正整数,还有,当pn中的value包括普通字符串和分隔符(比如“.”、“_”)时,可通过list(逐一按序列出)方式进行表示;在query部分中,kn表示query部分中的第n子部分的内容,记为kn=list<value>表示。
又在一个优选的实施中,鉴于在同一个网站中,大量网页的URL中,其scheme、domain、path等部分基本相同,而query部分往往不同,这时,在生成urlP时,可采用Map(映射)方式,比如key-value结构表示query部分,如图4中的“query:Map<kn,list<value>>”,并按字母顺序对kn排序,其中各个kn可表示query中对应子部分的取值。
例如,前述举例的facebook的URL,在按图4的数据结构解析所生成的URL结构规则,比如命名为urlPx,其结果如图5所示,这样普通字符串用str表示其类型,特殊符号采用分隔符或者规则表示其类型,这样即使长度很长的URL,采用统一的URL结构规则后,也非常便于统计分析,可提高效率。
又在一个优选的实施中,在生成的URL结构规则中可增加一个用于表征对应的所述已采集网页的URL的结构的深度参数,其中深度参数是按所述数据结构进行解析时,并按预设的深度解析策略所获取出的,所对应的所述已采集网页的URL的结构的深度值,如图5中所示的deep参数,这样通过deep参数可快速地将统计对比的URL进行筛选,即deep参数不同,URL为相同或相近的概率非常低,进而可提高统计比对效率。
具体实施中,深度解析策略可根据实际需要设定,比如deep参数可用于表征整个URL的总深度,即scheme、domain、path和query等所有部分的总深度,还可用于表征path和query两个部分的总深度。图5中,deep为表示path和query两部分的总深度,所以取值为5。
具体实施中,为便于后续统计分析和泛化处理,还可记录所有URL的总数量,比如将所有已采集网页的URL的总数据记为url_total_cnt。
步骤S204、将相同的信息指纹所对应的所述统一资源定位符结构规则,按预设的泛化策略泛化得到所述相同的信息指纹对应的所述去重规则。
具体实施中,泛化策略可根据需要采集网页的URL的结构特点来预设,比如,在针对一个网站进行整站采集时,存在大量URL中的scheme、domain基本相同,甚至在大量的URL中还具有相同的path,而不同query部分所对应的网页内容,通常仅较少内容不同,这时泛化策略可包括对query部分进行泛化的策略,比如query部分的全部泛化或者部分泛化。又比如,在针对多个网站进行同时段采集中,不仅存在大量URL中的scheme、domain不相同,还存在大量的URL中的path、query不相同,但因转载,可能这些URL完全不相同的网页,其内容却相同或者相似程度达到预设的相似阈值,这时泛化策略可包括scheme、domain、path和query中的一种或者多种。比如,为了能更好地过滤来自于不同网站、但网页内容相同或相似的相似网页,这时泛化策略可包括以scheme、domain不同,先生成规则,然后再按path和/或query泛化。
具体实施中,在按预设的泛化策略,比如以scheme、domain的不同来生成不同规则,并以path和/或query进行泛化,得到通用URL结构规则,这时所得到的通用URL结构规则中,被泛化部分可采用通配符“*”描述。
例如,假如在采集到的facebook网站的网页中,大量网页与前述举例的facebook网站的URL对应的网页相似(比如信息指纹都相同,或者信息指纹的相似度满足预设的指纹相似度阈值),且这些相似网页的URL中,不同之处就在于,均是path中同一个位置的内容不同,比如像举例的URL中的path部分的p3部分所包括的“1525935263”,这时可根据这些相似网页的URL和信息指纹,进而利用上述步骤,将如举例的path中的“1525935263”所对应的部分作为泛化部分,这样所生成的这些相似网页对应的去重规则,结果如图7所示的classurlP,其中被泛化部分采用通配符“*”表示,即用“[*]+”在urlP中表示该去重规则中“*”部分为规则的描述,且类型标识为“规则”,具体见图中虚线框的所标识部分。
在一个优选的实施中,为了增强泛化所得的去重规则的泛化能力,如图7所示,步骤S204可包括如下步骤:
S2041、合并URL结构规则,以生成用于表征相同的信息指纹所对应的所述统一资源定位符结构规则。
具体实施中,通过将相同的信息指纹所对应的所述统一资源定位符结构规则进行合并,来得到合并后的URL结构规则中各个部分的取值列表,以便于泛化时根据取值列表,来决定某个部分被泛化。具体地,可采用如下合并规则对URL结构规则进行合并处理:
1)基于scheme或domain合并
如果scheme或domain与已有的URL结构规则不同,则产生新的URL结构规则,否则合并到已有的URL结构规则中,并记录合并到该URL结构规则的URL的数量,比如记为p_url_cnt。
2)基于path合并
在基于path进行统计和合并时,可分别将参与到合并中的URL结构规则中的各个pn进行合并,比如,如果p1相同,记录p1的value计数+1,如果p1的值不同,增加p1的取值,比如记为p1={v1:2,v2:1},这样合并后可获得pn的各个value值,即pn的取值列表,如记为pn=list<value>,这样后续泛化时,可方便地根据合并后的URL结构规则中pn的取值列表,即根据pn中的v1、v2、…、vi的值,来按预设的泛化策略,决定vn部分是否作为泛化部分。
3)基于query合并
合并kn的value,并且记录kn出现的次数N_kn,可参考path合并的说明,这里不再赘述。
步骤S2043、确定合并后的URL结构规则是否有效,有效则执行步骤S2045。
具体实施中,可通过确定参与合并的URL结构规则的数量是否满足预设的有效数量,来判断合并后的URL结构规则是否有效。具体地,如果第i个所合并后的URL结构规则,记为规则urlPi,若参与合并到该urlPi的URL数量占总URL数量的比例低于预设的比例阈值,则该urlPi规则不生效。比如,p_url_cnt_i记为参与合并到该urlPi规则的URL总数量,url_total_cnt记为全部已采集网页的URL的总数量,这时若p_url_cnt_i/url_total_cnt<β,其中β为预设的比例阈值,则检验该urlPi规则不生效。具体实施中,预设的比例阈值β可根据实际应用进行预设,比如在大数据应用中,重要的、关键的数据通常占比在20%左右,这时β可取值为20%,这样占比小于20%的这些网页,通常所包含的内容与其他网页内容可能相似的概率低,因而可将这些网页的URL不参与到泛化中,以避免因重要的、关键的数据的URL经去重规则被去重,而无法采集到。
通过预先判断所合并得到的urlPi是否有效,进而将无效的urlPi预先剔除,可提高后续泛化效率,也可提高泛化所得到的去重规则对URL的针对性,从而提高去重效率。
需要说明的是,在具体实施中,该步骤可根据实际需要,来决定是否采用,比如在去重规则的泛化早期,由于已采集网页的URL总数量较少,这时占比将较高,若采用该步骤,则经泛化出来的去重规则,不仅数量众多,而且去重规则对URL的针对性非常弱,即去重规则的泛化能力非常弱,这样利用这些去重规则对后续采集的网页进行URL去重时,效果一般,因而可先省略该步骤,这样可便于采集到更的网页,来参与到去重规则的泛化生成中,而当网页的URL数量已采集到比较多,比如已采集网页已达到预设的数量阈值,这时可利用该步骤,以便于在后续泛化步骤后,得到对URL针对性更强的去重规则,从而增强了去重规则的泛化能力,提高最终去重效果。
S2045、对合并后的URL结构规则进行泛化,以泛化出可表征已采集的相似网页的所述去重规则。
具体实施中,可根据实际应用需要,通过在预设的泛化策略中预设一个泛化阈值,用于判断URL中的各个组成部分的取值是否满足此泛化阈值要求,进而将满足要求那个组成部分作为被泛化的部分进行泛化,比如若某一组成部分的取值数量达到总URL数量p_url_cnt的80%以上,这时该组成部分可被泛化,若某一组成部分只有一个,此部分保留,若某一组成部分的取值非一个,但又小于总URL数量p_url_cnt的80%,这时该部分不做泛化。
具体地,可采用如下预设的一种或多种泛化策略对合并后的URL结构规则进行泛化处理,以泛化得到用于表征已采集的相似网页的所述去重规则:
1)泛化path
根据pn的取值列表,即在前述的合并中,先分别统计所述路径部分中的每一子路径部分的数量,然后判断所述每一子路径部分的数量是否满足预设的第一泛化阈值,并将满足第一泛化阈值对应的所述每一子路径部分进行泛化。其中,第一泛化阈值可根据实际应用进行设置,比如设置为参与合并到该URL结构规则的URL总数量p_url_cnt,或者设置为p_url_cnt的80%等。
具体实施中,可将第一泛化阈值设置为生成该URL结构规则的URL总数量p_url_cnt,并通过以下策略来对path部分的各个pn部分进行统计分析,并确定出被泛化的部分:
如果pn部分的value计数结果为1,比如value只有一个值为v1,那么pn部分需要保留,不被泛化,这时pn=v1;
如果pn部分的value计数结果与参与合并到该URL结构规则的URL总数量p_url_cnt相同,即pn部分的value值有p_url_cnt个,且有共同的前缀a、分隔符“_”,那么pn部分可以被泛化,且采用pn=a_[*]+表示,其中[*]+表示任意不为空字符;
如果pn的value有p_url_cnt个,但没有共同前缀或者后缀,并且可为空,那么pn部分可以被泛化,采用pn=[*]表示,[*]表示任意字符。
2)泛化query
根据kn的取值列表,即在前述的合并中,先分别统计所述查询参数部分中的每一子查询参数部分的数量,然后判断所述每一子查询参数部分的数量是否满足预设的第三泛化阈值,并在满足时,将满足第三泛化阈值对应的所述每一子查询参数部分进行泛化。其中,第三泛化阈值可根据实际应用进行设置,比如设置为生成该URL结构规则的URL总数量p_url_cnt,或者设置为生成该URL结构规则的URL总数量p_url_cnt的80%等。
具体实施中,可将第三泛化阈值设置为生成该URL结构规则的URL总数量p_url_cnt,并通过以下策略来对query部分的各个kn部分进行统计分析,并确定出被泛化的部分:
如果kn部分的数量,记为N_kn,与生成该URL结构规则的URL总数量相同,即N_kn=p_url_cnt,那么kn部分必须存在;
如果N_kn<p_url_cnt,则kn部分可有可无;
如果kn必须存在,泛化过程与上述pn部分类似,这里不再赘述。
3)确定经1)和/或经2)所泛化得到的通用URL结构规则是否有效,并将确定为有效的通用URL结构规则作为所述去重规则。
具体实施中,可按预设的校验规则,确定所泛化的部分是否满足校验规则,来确定泛化出的通用规则是否有效,比如,如果泛化部分为query部分中的内容,则可默认有效,又比如,如果泛化部分为path部分中的内容,则校验规则可设置为,比如判断被泛化的所述每一子路径部分的长度是否满足预设的第二泛化阈值,其中,第二泛化阈值可根据实际应用设置,比如当校验规则为,判断被泛化部分的长度占path总长度的比例是否低于预设的比例,这时第二泛化阈值可设置为10%、20%、80%等。比如,当泛化部分为path部分,且泛化内容的长度小于path总长度的20%,则校验结果为泛化有效,而超过20%,则校验结果为泛化不生效。
又在一个优选的实施中,为避免根据不同信息指纹,所泛化得到的所述去重规则重复,还可采用映射方式,比如key-value结构,将所述去重规则采用key-value表示,即可将所述去重规则的字符设置为唯一的key值,而信息指纹可对应为value值,这样只要key值相同,就为相同的去重规则,有效避免去重规则的重复表示,通过合并相同的去重规则,减少了去重规则占用存储资源,也便于利用去重规则对URL去重,提高去重处理效率。
又在一个优选的实施中,步骤S204中还可包括步骤S2047,这样通过步骤S2047可将泛化得到的所述去重规则回流到预设的去重规则库中。
具体实施中,回流机制可采用增量同步机制,比如每日回流、增量达到预设增量阈值时回流等。
具体实施中,所述去重规则在回流前,可采用ODPS(分布式的海量数据处理平台)存储,而回流后,可采用RDS(关系型数据库)存储,这样可利用ODPS对数据加工处理,利用RDS进行匹配处理,可满足大数据环境下高吞吐量的网页采集和去重。
为便于理解,这里对上述泛化得到所述去重规则的工作原理,做如下说明。
如图8所示,这里以5个已采集网页的URL数据及相应的信息指纹进行泛化得到所述去重规则。假如,这5个网页的URL中,仅query部分中的filter_mall的取值不同,且前三个网页的信息指纹相同,后两个网页的信息指纹相同,通过上述步骤S202-S204,分别泛化得到的前三个网页的URL对应的通用URL结构规则,以及后两个网页的URL对应的通用URL结构规则,如图中所示对应的两个结果,由于泛化部分为query部分,校验为有效,且泛化位置都是filter_mall,即filter_mall=*,因而两个结果是相同的,进而可将这两个相同的结果加以合并,最后得到的所述去重规则如图中的去重规则一栏所示。
图8中,还对利用所述去重规则在新采集网页时,如何去重进行示意说明,比如利用图中的去重规则,对待采集网页的URL一栏的两个待采集网页进行去重处理,由于第一个待采集网页的URL中,除filter_mall的取值外,其余各部分与去重规则相同,而filter_mall=32又匹配于filter_mall=*,这时待采集网页的URL与图中的去重规则匹配,即匹配结果为匹配,因而可将该URL过滤,来放弃采集该URL的网页,而第二个待采集网页的URL中,虽然filter_mall=32匹配于filter_mall=*,但由于query部分中的filter_category=777与去重规则中的filter_category=546不同,无法与去重规则匹配,即匹配结果为非匹配,因而可保留该URL,进而通过该URL来采集(比如下载)该URL对应的网页。
在一些优选的实施方式中,需要根据匹配结果来决定后续处理,比如需要根据匹配结果是否匹配,来在采集过程中采取相应处理措施,如在确定出所述目标网页非重复时,即匹配结果为非匹配时,对所述目标网页进行采集分析,采集分析可包括如再次对URL去重、抓取目标网页、分析目标网页的内容、存储目标网页的内容等,又比如在确定出所述目标网页重复时,即匹配结果为匹配时,记录所述目标网页的URL数据,以便于今后对相同URL数据去重。
如图9所示,还可通过预设的URL去重策略,其中URL去重策略中记录了历史URL情况,这样可再对网页进一步去重,比如设置一URL去重库,以作为历史URL库,用于记录无需再采集的网页的URL数据,如已采集过的网页的URL、已确定为重复的网页的URL、黑名单的网页等。
在一个优选的实施方式中,步骤S302获取目标网页对应的URL数据,然后步骤S304确定目标网页对应的URL数据与预设的去重规则库中的去重规则是否匹配,当匹配时,步骤S306确定目标网页重复。通过URL匹配去重规则,进而确定出目标网页是重复的,来去重目标网页。
需要说明的是,步骤S302和步骤S304可参考前述说明,这里不再赘述。
又在一个优选的实施方式中,还可在步骤S306后,即在确定出所述目标网页重复后,采用步骤S308,将已确定为重复的所述目标网页对应的URL数据,添加到预设的URL去重库(即URL去重策略)中,以便在大数据应用环境中,避免因匹配的所述去重规则暂不存在、但相同URL的网页又在短时间内再次被采集,可进一步提高网页去重的性能,以及节约更多资源。
需要说明的是,URL去重库可根据实际对URL去重的需要,比如采用数据库,又比如采用前述的URL映射关系,如Hash、MD5等,这里不再赘述。
又在一个优选的实施方式中,可在步骤S304确定出所述目标网页的URL数据未存在匹配的去重规则时,即匹配结果为非匹配时,采用以下步骤对需要采集网页进一步去重:
S310、确定目标网页的URL数据是否已存在于预设的URL去重库中,若否则执行步骤S314,若是则执行步骤S312。
步骤S312、放弃采集所述目标网页。
步骤S314、采集所述目标网页。具体实施中,采集所述目标网页时,可通过爬虫来抓取所述目标网页,也可下载所述目标网页,这里不做具体限定。
通过利用URL去重库,可对需要采集的目标网页的URL数据,进一步去重,提高了网页去重的准确性。
又在一个优选的实施方式中,根据去重需要,比如对所采集的网页内容的准确性要求更高、重复率更低,或者需要节约更多存储资源,还可在步骤S314后,对所采集的所述目标网页进一步去重,从而在将本发明提供的网页去重方法,应用于大数据环境下的网页采集后,使得所采集到的网页更准确、有效。
具体地,如图10所示,本说明书实施例提供一种网页去重方法,还包括:
步骤S316、计算所述目标网页的信息指纹。
需要说明的是,可按照前述的预处理、生成策略等内容计算出所述目标网页的信息指纹,这里步骤展开说明。
具体实施中,可通过预设的指纹库,其中指纹库用于存储信息指纹,从而可基于该指纹库确定新的信息指纹是否已存在。其中,可根据实施需要,指纹库可采用数据库形式,也可采用前述的映射关系形式,这里不再展开说明。
具体地,可将所述目标网页的网页指纹存储于指纹库中,以用于以后对相同的信息指纹进行去重。
步骤S318、确定所述目标网页的信息指纹是否已存在,若否则执行步骤S320,若是则执行步骤S322。
步骤S320、处理所述目标网页。
具体实施中,可根据实际应用的需要,来对所述目标网页及其内容进行数据处理,比如存储、提取目标内容等,这里不再展开说明。
步骤S322、丢弃所述目标网页。
又在一个优选的实施方式中,在步骤S320中,可将所述目标网页中包含的子URL数据提取后,放入采集的URL队列中,进而利用本发明提供的网页去重方法,全面地、有效地将这些子URL数据对应的网页进行采集的去重,从而可完整地采集网页包含的有效信息。
又在一个优选的实施方式中,如图11所示,本说明书实施例还提供一种网页去重方法,采用实时在线系统采集及分析网页,采用离线分析系统泛化出所述去重规则,实时在线系统将已采集网页的URL数据和信息指纹采用增量同步方式向离线分析系统同步,这样既可将实时在线所采集的网页也用于泛化出所述去重规则,来提高所述去重规则对网页的URL数据的泛化能力,同时采用在线和离线结合的方式,可减轻网页去重对整体系统性能的要求,这样网页去重可更好地应用于大数据环境中。这里的增量同步方式可根据实际应用进行预设同步方案,比如同步方案可包括固定周期同步,或者增量达到预设数值时同步,这里不再具体限定。
具体实施中,还可将已采集网页的信息指纹的分析计算,设置于离线分析系统中,进一步减轻网页去重中对实时在线分析系统的性能压力,这里不再展开说明。
具体实施中,还可将所述去重规则构成规则引擎,从而通过引擎来快速、准确地确定所述目标网页的URL数据是否存在匹配的去重规则,来进一步提高网页去重的效率。
具体实施中,可采用MapReduce(面向大数据并行处理的计算模型、框架和平台)进行离线分析计算,来实现上述泛化得到所述去重规则的步骤,整体离线分析框架可如图12所示,比如通过map来实现分片处理、拆分URL,其中可根据“域名+path+querysize+网页指纹”来将域名部分、path部分、query部分、甚至是网页指纹(即信息指纹)是相同的网页形成片组,来进行分片化处理,拆分URL时也可按照预设的数据结构进行拆分处理,并通过reduce进行过滤、合并、校验、泛化等处理工作,这里不再展开说明。
为便于理解,这里再对如何在大数据应用环境中,利用本说明书实施例提供的网页去重方法,在采集网页时的去重过程进行示意说明。如图13所示,在采集目标网页前,从采集队列(如URL队列)中获取目标网页的URL,然后利用URL规则库(即去重规则库)中的去重规则,对URL进行归一化去重处理,还可利用历史URL库再次对URL去重,这样经这两次URL的去重处理,再下载网页。还有,在下载网页后,还可计算出该网页的网页指纹(即信息指纹),比如利用网页指纹计算服务器在线实时计算分析获得信息指纹,然后再次利用指纹库中的指纹,确定该网页是否已存在相应的指纹,若是就丢弃该网页数据,若否,则对网页进行处理,比如解析网页、提取出网页包含的子链接、进行数据存储等。另外,还可将提取的网页子链接进一步放入URL队列中,进一步对这些子链接的网页进行采集的去重。其中,网页指纹计算服务可采用实时计算分析方式,网页指纹的计算分析可包括清洗、特征选择、文本分词、指纹计算等,进而形成指纹库,该指纹库可同步给离线计算分析的网页分析引擎,通过引擎计算分析得到去重规则库(即URL规则库)。具体实施中,实时计算分析、离线计算分析均可采用相应的大数据平台,这里不再展开说明。
基于同一个发明构思,本说明书实施例还提供用于网页去重的网页去重装置、电子设备以及非易失性计算机存储介质。
鉴于前述实施例中对所述网页去重方法已进行了详细说明,下面实施例中对装置、设备以及非易失性计算机存储介质所涉及的相应内容将不再赘述。
如图14所示,其中虚线方框表示可选的模块,所述网页去重装置10包括获取模块11、确定模块12和第一去重模块13。其中,获取模块11用于获取目标网页对应的统一资源定位符数据;确定模块12用于确定所述目标网页对应的统一资源定位符数据是否与预设的去重规则库中的去重规则匹配,所述去重规则用于表征相似网页的统一资源定位符的结构规则,所述去重规则为将若干已采集网页的统一资源定位符数据和所述若干已采集网页的信息指纹共同泛化得到;第一去重模块13用于根据匹配结果对所述目标网页进行去重处理。
可选地,网页去重装置10还包括采集模块14、生成模块15和处理模块16。其中,采集模块14用于在确定模块12输出的匹配结果为非匹配时,采集所述目标网页;生成模块15用于根据采集的所述目标网页,生成所述目标网页的信息指纹;确定模块12还用于确定所述目标网页的信息指纹是否已存在于预设的指纹库中,若存在,则丢弃所述目标网页,若不存在,则调用处理模块16;处理模块16用于对所述目标网页进行数据处理。
可选地,网页去重装置10还包括第一存储模块17,第一存储模块17用于将所述目标网页的信息指纹存储于所述指纹库中。
可选地,网页去重装置10还包括提取模块18,提取模块18用于提取所述目标网页中的子链接数据,以对所述子链接数据对应的网页进行去重。
可选地,网页去重装置10还包括第二去重模块19,第二去重模块19用于在确定模块12输出的匹配结果为非匹配时,利用预设的统一资源定位符去重策略,对所述目标网页对应的统一资源定位符数据进行统一资源定位符去重。
可选地,网页去重装置10还包括第二存储模块20,第二存储模块20用于将所述目标网页对应的统一资源定位符数据存储于预设的统一资源定位符去重库中。
可选地,网页去重装置10还包括解析模块21和归一化模块22。其中,解析模块21用于根据若干已采集网页的统一资源定位符数据,按预设的数据结构解析每一已采集网页的统一资源定位符数据,并将解析结果作为所述每一已采集网页对应的统一资源定位符结构规则;归一化模块22用于根据所述若干已采集网页的信息指纹,将相同的信息指纹所对应的所述统一资源定位符结构规则,按预设的泛化策略泛化得到所述相同的信息指纹对应的所述去重规则。
可选地,所述数据结构包括协议部分、域名部分、路径部分和查询参数部分;解析模块21用于根据若干已采集网页的统一资源定位符数据,将每一已采集网页的统一资源定位符数据,按所述数据结构获取出对应的协议部分、域名部分、路径部分和查询参数部分。
可选地,所述数据结构还包括深度参数,所述深度参数用于表征对应的所述已采集网页的统一资源定位符的结构的深度;解析模块21还用于将每一已采集网页的统一资源定位符数据,按所述数据结构获取出对应的所述深度参数。
可选地,网页去重装置10还包括合并模块23,合并模块23用于按预置的合并策略将泛化得到的所述去重规则进行合并。
可选地,如图15所示,归一化模块22包括合并单元221和归一化单元222。其中,合并单元221用于合并所述相同的信息指纹所对应的所述统一资源定位符结构规则;归一化单元222用于按预设的泛化策略对合并后的所述相同的信息指纹所对应的所述统一资源定位符结构规则进行泛化,以获得所述去重规则。
可选地,归一化模块22还包括校验单元223,校验单元223用于确定合并后的所述相同的信息指纹所对应的所述统一资源定位符结构规则是否有效,并在确定有效时,调用所述归一化单元。
可选地,如图16所示,归一化单元222包括第一统计单元2221、第一判断单元2222和第一泛化单元2223。其中,第一统计单元2221用于分别统计所述路径部分中的每一子路径部分的数量;第一判断单元2222用于判断所述每一子路径部分的数量是否满足预设的第一泛化阈值,若是,则调用第一泛化单元2223;第一泛化单元2223用于将所述每一子路径部分进行泛化。
可选地,第一判断单元2222还用于在将所述每一子路径部分进行泛化后,判断被泛化的所述每一子路径部分的长度是否满足预设的第二泛化阈值,若是,则确定对所述每一子路径部分的泛化为有效。
可选地,如图17所示,归一化单元222包括第二统计单元2224、第二判断单元2225和第二泛化单元2226。其中,第二统计单元2224分别统计所述查询参数部分中的每一子查询参数部分的数量;第二判断单元2225判断所述每一子查询参数部分的数量是否满足预设的第三泛化阈值,若是,则调用第二泛化单元2226;第二泛化单元2226用于将所述每一子查询参数部分进行泛化。
基于同一个发明构思,本说明书实施例中提供的用于网页去重的电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取目标网页对应的统一资源定位符数据;
确定所述目标网页对应的统一资源定位符数据是否与预设的去重规则库中的去重规则匹配,所述去重规则用于表征相似网页的统一资源定位符的结构规则,所述去重规则为将若干已采集网页的统一资源定位符数据和所述若干已采集网页的信息指纹共同泛化得到;
根据匹配结果对所述目标网页进行去重处理。
基于同样的思路,本说明书实施例提供一种用于网页去重的非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
获取目标网页对应的统一资源定位符数据;
确定所述目标网页对应的统一资源定位符数据是否与预设的去重规则库中的去重规则匹配,所述去重规则用于表征相似网页的统一资源定位符的结构规则,所述去重规则为将若干已采集网页的统一资源定位符数据和所述若干已采集网页的信息指纹共同泛化得到;
根据匹配结果对所述目标网页进行去重处理。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。