本發(fā)明涉及一種提取網(wǎng)站url的方法,屬于網(wǎng)絡(luò)
技術(shù)領(lǐng)域:
。
背景技術(shù):
:某些場(chǎng)景下,對(duì)網(wǎng)站海量訪問日志進(jìn)行分析時(shí),需要從中提取出網(wǎng)站url列表,然后根據(jù)網(wǎng)站url列表采樣訪問日志進(jìn)行分析。網(wǎng)站url中部分字段可能是可變的,例如:/abc/def/123/index.html,/abc/def/456/index.html,/abc/def/789/index.html等,其中第三個(gè)字段是用戶id。此種情況,其實(shí)只有一個(gè)url,即:/abc/def/*/index.html,“*”代表可變。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問題,本發(fā)明的目的在于提供一種提取網(wǎng)站url的方法。本發(fā)明的技術(shù)方案為:一種提取網(wǎng)站url的方法,其步驟為:1)從網(wǎng)站訪問日志中提取出url路徑;2)對(duì)提取的url路徑進(jìn)行去重,然后統(tǒng)計(jì)每一url路徑的字段個(gè)數(shù);3)按字段個(gè)數(shù)將url路徑分成多組,同一組內(nèi)的所有url路徑的字段個(gè)數(shù)相同;4)針對(duì)每一組url路徑,合并組內(nèi)所有url路徑的字段列表,去重后統(tǒng)一編號(hào);然后根據(jù)統(tǒng)一編號(hào)結(jié)果將組內(nèi)每一url路徑轉(zhuǎn)換成一向量,形成該組url路徑的矩陣;然后對(duì)該矩陣進(jìn)行聚類,如果某一聚類結(jié)果中的url路徑個(gè)數(shù)超過設(shè)定閾值,則對(duì)該聚類結(jié)果進(jìn)行聚合處理,識(shí)別出該聚類結(jié)果中的可變字段并將其替換為同一值;所述可變字段為同一聚類結(jié)果的各url路徑中,字段位置相同但字段值是可變的字段;5)將步驟4)處理后的各組url路徑合并形成該網(wǎng)站的url路徑列表。進(jìn)一步的,根據(jù)統(tǒng)一編號(hào)結(jié)果將組內(nèi)每一url路徑轉(zhuǎn)換成一向量的方法為:設(shè)合并組內(nèi)所有url路徑的字段列表中的字段個(gè)數(shù)為n,然后確定該字段列表中每一字段在向量中的位置并設(shè)置一對(duì)應(yīng)編號(hào);對(duì)于每一url路徑,將該url路徑中每一字段設(shè)置一位置編號(hào);然后對(duì)于組內(nèi)的每一url路徑,從向量的第一個(gè)位置開始,遍歷該url路徑,如果該url路徑存在與對(duì)應(yīng)位置的字段,則向量的該位置取值為對(duì)應(yīng)編號(hào),否則該位置設(shè)置為0,生成該url路徑的向量。進(jìn)一步的,將該url路徑中每一字段設(shè)置一位置編號(hào)的方法為:將該url路徑中第i個(gè)字段的位置編號(hào)設(shè)置為i。進(jìn)一步的,所述步驟2)中,將每一url路徑按照“/”分割,得到字段列表,然后統(tǒng)計(jì)得到該url路徑的字段個(gè)數(shù)。進(jìn)一步的,使用層次化的聚類算法對(duì)矩陣進(jìn)行聚類。本發(fā)明采用基于層次化的聚類(hierarchicalclustering;http://bluewhale.cc/2016-04-19/hierarchical-clustering.html或http://blog.pluskid.org/?p=407)。從網(wǎng)站海量日志中提取網(wǎng)站urlpath列表,提取步驟如下:1.從網(wǎng)站訪問日志每一行中提取出一urlpath,然后整體去重。2.將urlpath按照“/”分割,得到字段列表,然后統(tǒng)計(jì)字段個(gè)數(shù)。3.按字段個(gè)數(shù)將所有urlpath分成多組,組內(nèi)的所有urlpath的字段個(gè)數(shù)相同。4.針對(duì)每一組urlpath,合并組內(nèi)所有urlpath的字段列表,去重后統(tǒng)一編號(hào)。5.遍歷組內(nèi)urlpath,將urlpath的字段列表根據(jù)統(tǒng)一編號(hào)結(jié)果轉(zhuǎn)換成向量。例如所有字段編號(hào)為{“a”:1,“b”:2,“c”:3,“d”:4},即“a”在向量中的位置為1,“b”在向量中的位置為2。如果url1的字段列表為[“c”,“d”,“b”],則url1轉(zhuǎn)換后的向量為[0,3,1,2](“a”不存在,所以向量第1個(gè)元素為0;“b”在url1的位置為3,因此向量第2個(gè)元素為3;“c”在url1的位置為1,因此向量第3個(gè)元素為1;“d”在字段列表中的位置為2,因此向量第4個(gè)元素為2)。6.組內(nèi)所有urlpath的字段列表轉(zhuǎn)換成向量后,形成一個(gè)矩陣。7.使用層次化的聚類算法對(duì)矩陣做聚類。8.處理聚類結(jié)果:聚類結(jié)果可能會(huì)將不包含可變字段的多個(gè)urlpath聚成一類,此時(shí)可以通過同一類別包含的urlpath個(gè)數(shù)做判斷,如果urlpath個(gè)數(shù)較少,則說明不包含可變字段,此類別中的urlpath不需要聚合;如果個(gè)數(shù)較多,則說明包含可變字段,將此類別中的urlpath做聚合處理,例如“/a/b/*/d.html”,即第三個(gè)字段為任意字符串。其中,可變字段為同一聚類結(jié)果的各url路徑中,字段位置相同但字段值是可變的字段。通過統(tǒng)計(jì)各個(gè)字段位置的字段值個(gè)數(shù),將個(gè)數(shù)較多的變?yōu)?即可。9.將所有組的urlpath合并形成總的urlpath列表。與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:本發(fā)明可以自動(dòng)化的從網(wǎng)站海量訪問日志中還原網(wǎng)站的所有url,包括某些字段可變的url。附圖說明圖1為本發(fā)明方法的流程圖。具體實(shí)施方式下面結(jié)合附圖,對(duì)優(yōu)選實(shí)施例作詳細(xì)說明。應(yīng)該強(qiáng)調(diào)的是下述說明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。如圖1所示,本發(fā)明的流程為:1、提取urlpath網(wǎng)站訪問日志中一般包括:時(shí)間戳、源ip、源端口、目的ip、目的端口、主機(jī)名、url、useragent、cookie。url的語法格式為:protocol://hostname[:port]/path/[;parameters][?query]#fragment。從每一行網(wǎng)站訪問日志中提取出url,截取出path部分。對(duì)所有提取出的urlpath做去重處理。2、提取字段將urlpath按“/”分割得到字段列表。統(tǒng)計(jì)urlpath的字段個(gè)數(shù)。依次處理每一個(gè)urlpath,得到每一個(gè)urlpath的字段列表和字段個(gè)數(shù)。3、分組按字段個(gè)數(shù)將所有urlpath分成多組,組內(nèi)的所有urlpath的字段個(gè)數(shù)相同。4、字段編號(hào)針對(duì)每一組urlpath,合并組內(nèi)所有urlpath的字段列表,去重后統(tǒng)一編號(hào)。例如:/abc/def/123/index.html,/abc/def/456/index.html,/abc/def/789/index.html,去重后統(tǒng)一編號(hào)的結(jié)果如下所示:5、生成向量遍歷組內(nèi)urlpath,將urlpath的字段列表根據(jù)統(tǒng)一編號(hào)結(jié)果轉(zhuǎn)換成向量。假設(shè)字段總數(shù)為n,則向量為n維向量。向量的每一維的值等于對(duì)應(yīng)的字段在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組內(nèi)所有urlpath的字段列表轉(zhuǎn)換成向量后,形成一個(gè)矩陣,如表1所示。6、聚類使用層次化的聚類算法對(duì)矩陣做聚類。層次化的聚類算法有開源實(shí)現(xiàn),例如scipy.cluster.hierarchy,請(qǐng)參考:https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.cluster.hierarchy.fclusterdata.html。7、處理聚類結(jié)果聚類結(jié)果可能會(huì)將不包含可變字段的多個(gè)urlpath聚成一類,此時(shí)可以通過同一類別包含的urlpath個(gè)數(shù)做判斷。如果同一類別的urlpath個(gè)數(shù)較少,例如小于1000,則說明不包含可變字段,此類別中的urlpath不需要聚合。如果同一類別的urlpath個(gè)數(shù)較多,例如大于等于1000,則說明包含可變字段,將此類別中的urlpath做聚合處理,例如“/a/b/*/d.html”,即第三個(gè)字段為任意字符串。8、合并將所有組的聚類后的urlpath合并形成總的新urlpath列表。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁12