一种提取网站URL的方法与流程

文档序号:11251039阅读:4146来源:国知局
本发明涉及一种提取网站url的方法,属于网络
技术领域

背景技术
:某些场景下,对网站海量访问日志进行分析时,需要从中提取出网站url列表,然后根据网站url列表采样访问日志进行分析。网站url中部分字段可能是可变的,例如:/abc/def/123/index.html,/abc/def/456/index.html,/abc/def/789/index.html等,其中第三个字段是用户id。此种情况,其实只有一个url,即:/abc/def/*/index.html,“*”代表可变。技术实现要素:针对现有技术中存在的技术问题,本发明的目的在于提供一种提取网站url的方法。本发明的技术方案为:一种提取网站url的方法,其步骤为:1)从网站访问日志中提取出url路径;2)对提取的url路径进行去重,然后统计每一url路径的字段个数;3)按字段个数将url路径分成多组,同一组内的所有url路径的字段个数相同;4)针对每一组url路径,合并组内所有url路径的字段列表,去重后统一编号;然后根据统一编号结果将组内每一url路径转换成一向量,形成该组url路径的矩阵;然后对该矩阵进行聚类,如果某一聚类结果中的url路径个数超过设定阈值,则对该聚类结果进行聚合处理,识别出该聚类结果中的可变字段并将其替换为同一值;所述可变字段为同一聚类结果的各url路径中,字段位置相同但字段值是可变的字段;5)将步骤4)处理后的各组url路径合并形成该网站的url路径列表。进一步的,根据统一编号结果将组内每一url路径转换成一向量的方法为:设合并组内所有url路径的字段列表中的字段个数为n,然后确定该字段列表中每一字段在向量中的位置并设置一对应编号;对于每一url路径,将该url路径中每一字段设置一位置编号;然后对于组内的每一url路径,从向量的第一个位置开始,遍历该url路径,如果该url路径存在与对应位置的字段,则向量的该位置取值为对应编号,否则该位置设置为0,生成该url路径的向量。进一步的,将该url路径中每一字段设置一位置编号的方法为:将该url路径中第i个字段的位置编号设置为i。进一步的,所述步骤2)中,将每一url路径按照“/”分割,得到字段列表,然后统计得到该url路径的字段个数。进一步的,使用层次化的聚类算法对矩阵进行聚类。本发明采用基于层次化的聚类(hierarchicalclustering;http://bluewhale.cc/2016-04-19/hierarchical-clustering.html或http://blog.pluskid.org/?p=407)。从网站海量日志中提取网站urlpath列表,提取步骤如下:1.从网站访问日志每一行中提取出一urlpath,然后整体去重。2.将urlpath按照“/”分割,得到字段列表,然后统计字段个数。3.按字段个数将所有urlpath分成多组,组内的所有urlpath的字段个数相同。4.针对每一组urlpath,合并组内所有urlpath的字段列表,去重后统一编号。5.遍历组内urlpath,将urlpath的字段列表根据统一编号结果转换成向量。例如所有字段编号为{“a”:1,“b”:2,“c”:3,“d”:4},即“a”在向量中的位置为1,“b”在向量中的位置为2。如果url1的字段列表为[“c”,“d”,“b”],则url1转换后的向量为[0,3,1,2](“a”不存在,所以向量第1个元素为0;“b”在url1的位置为3,因此向量第2个元素为3;“c”在url1的位置为1,因此向量第3个元素为1;“d”在字段列表中的位置为2,因此向量第4个元素为2)。6.组内所有urlpath的字段列表转换成向量后,形成一个矩阵。7.使用层次化的聚类算法对矩阵做聚类。8.处理聚类结果:聚类结果可能会将不包含可变字段的多个urlpath聚成一类,此时可以通过同一类别包含的urlpath个数做判断,如果urlpath个数较少,则说明不包含可变字段,此类别中的urlpath不需要聚合;如果个数较多,则说明包含可变字段,将此类别中的urlpath做聚合处理,例如“/a/b/*/d.html”,即第三个字段为任意字符串。其中,可变字段为同一聚类结果的各url路径中,字段位置相同但字段值是可变的字段。通过统计各个字段位置的字段值个数,将个数较多的变为*即可。9.将所有组的urlpath合并形成总的urlpath列表。与现有技术相比,本发明的积极效果为:本发明可以自动化的从网站海量访问日志中还原网站的所有url,包括某些字段可变的url。附图说明图1为本发明方法的流程图。具体实施方式下面结合附图,对优选实施例作详细说明。应该强调的是下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。如图1所示,本发明的流程为:1、提取urlpath网站访问日志中一般包括:时间戳、源ip、源端口、目的ip、目的端口、主机名、url、useragent、cookie。url的语法格式为:protocol://hostname[:port]/path/[;parameters][?query]#fragment。从每一行网站访问日志中提取出url,截取出path部分。对所有提取出的urlpath做去重处理。2、提取字段将urlpath按“/”分割得到字段列表。统计urlpath的字段个数。依次处理每一个urlpath,得到每一个urlpath的字段列表和字段个数。3、分组按字段个数将所有urlpath分成多组,组内的所有urlpath的字段个数相同。4、字段编号针对每一组urlpath,合并组内所有urlpath的字段列表,去重后统一编号。例如:/abc/def/123/index.html,/abc/def/456/index.html,/abc/def/789/index.html,去重后统一编号的结果如下所示:5、生成向量遍历组内urlpath,将urlpath的字段列表根据统一编号结果转换成向量。假设字段总数为n,则向量为n维向量。向量的每一维的值等于对应的字段在urlpath的位置,如果在urlpath中不存在,则位置为0。例如:/abc/def/123/index.html,/abc/def/456/index.html,/abc/def/789/index.html,生成的向量如表1所示:表1为向量表urlpathabcdef123456789index.html/abc/def/123/index.html123004/abc/def/456/index.html120304/abc/def/789/index.html120034组内所有urlpath的字段列表转换成向量后,形成一个矩阵,如表1所示。6、聚类使用层次化的聚类算法对矩阵做聚类。层次化的聚类算法有开源实现,例如scipy.cluster.hierarchy,请参考:https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.cluster.hierarchy.fclusterdata.html。7、处理聚类结果聚类结果可能会将不包含可变字段的多个urlpath聚成一类,此时可以通过同一类别包含的urlpath个数做判断。如果同一类别的urlpath个数较少,例如小于1000,则说明不包含可变字段,此类别中的urlpath不需要聚合。如果同一类别的urlpath个数较多,例如大于等于1000,则说明包含可变字段,将此类别中的urlpath做聚合处理,例如“/a/b/*/d.html”,即第三个字段为任意字符串。8、合并将所有组的聚类后的urlpath合并形成总的新urlpath列表。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1