一種http協(xié)議信息提取的方法和裝置的制造方法
【專利摘要】本發(fā)明公開了一種http協(xié)議信息提取的方法和裝置,該方法包括載入用于http協(xié)議信息提取的提取規(guī)則,并存入內(nèi)存;從待分析數(shù)據(jù)中獲取一條數(shù)據(jù)中的host和url;判斷獲取到的host和url是否與提取規(guī)則相匹配;以及在獲取到的host和url與提取規(guī)則相匹配時(shí),根據(jù)提取規(guī)則進(jìn)行http協(xié)議信息的提取。通過(guò)本發(fā)明,能夠在大數(shù)據(jù)下對(duì)http協(xié)議進(jìn)行快速、高效的分析和信息提取。
【專利說(shuō)明】
一種h 11 p協(xié)議信息提取的方法和裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及數(shù)據(jù)分析技術(shù)領(lǐng)域,具體而言,特別涉及一種http協(xié)議信息提取的方 法和裝置。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,大數(shù)據(jù)時(shí)代也將到來(lái)。如今社交數(shù)據(jù)、企業(yè)內(nèi)容、交 易與應(yīng)用數(shù)據(jù)等新數(shù)據(jù)源的興起,傳統(tǒng)數(shù)據(jù)源的局限被打破,企業(yè)越發(fā)需要有效的信息來(lái) 確保其真實(shí)性及安全性。
[0003] 在數(shù)據(jù)量非常寵大的今天,數(shù)據(jù)協(xié)議種類的快速上升以及協(xié)議內(nèi)容的快速更新, 協(xié)議分析的復(fù)雜性也不言而喻,http數(shù)據(jù)協(xié)議信息提取將面臨極大的挑戰(zhàn)。目前在大數(shù)據(jù) 環(huán)境下,http協(xié)議種類繁多,關(guān)系復(fù)雜,目前采用的傳統(tǒng)分析方法是針對(duì)每個(gè)網(wǎng)頁(yè)鏈接,一 個(gè)一個(gè)的進(jìn)行分析,這樣的分析方法在獲取協(xié)議內(nèi)容的有效信息時(shí),速度慢、效率低。
[0004] 針對(duì)現(xiàn)有技術(shù)中存在的上述問(wèn)題,目前尚未提出有效的解決方法。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的主要目的在于提供一種http協(xié)議信息提取的方法和裝置,以解決現(xiàn)有技 術(shù)中http協(xié)議在獲取協(xié)議內(nèi)容的有效信息時(shí),速度慢、效率低的技術(shù)的問(wèn)題。
[0006] 依據(jù)本發(fā)明的一個(gè)方面,提供了一種http協(xié)議信息提取的方法,該方法包括:載入 用于http協(xié)議信息提取的提取規(guī)則,并存入內(nèi)存;從待分析數(shù)據(jù)中獲取一條數(shù)據(jù)中的host 和url;判斷獲取到的host和url是否與提取規(guī)則相匹配;以及在獲取到的host和url與提取 規(guī)則相匹配時(shí),根據(jù)提取規(guī)則進(jìn)行http協(xié)議信息的提取。
[0007] 進(jìn)一步地,提取規(guī)則為xml配置文件,載入提取規(guī)則包括:采用SAXReader讀入xml 配置文件;遍歷host標(biāo)簽,構(gòu)造 Host Info實(shí)體對(duì)象;遍歷host標(biāo)簽下的url info標(biāo)簽,構(gòu)造 Url Info實(shí)體對(duì)象,并對(duì)協(xié)議小類代碼和自定義類進(jìn)行有效性驗(yàn)證;遍歷url info標(biāo)簽下的 8〇1:;[1^0標(biāo)簽,構(gòu)造661:11^0實(shí)體對(duì)象,對(duì)?17?6、81'003丨3屬性和自定義類進(jìn)行有效性驗(yàn)證 ; 遍歷〖61:;[11;1^0標(biāo)簽下的1:0(^丨3標(biāo)簽,構(gòu)造1'0(13丨3實(shí)體對(duì)象,對(duì)1^5^1:1';[11〖和自定義類進(jìn)行有 效性驗(yàn)證;以及統(tǒng)計(jì)各類標(biāo)簽個(gè)數(shù)。
[0008] 進(jìn)一步地,在載入提取規(guī)則后,存入內(nèi)存包括:在內(nèi)存中以HashMap方式將載入的 提取規(guī)則保存在內(nèi)存中,其中,HashMap方式中鍵為各標(biāo)簽的標(biāo)簽屬性。
[0009] 進(jìn)一步地,判斷獲取到的host和url是否與提取規(guī)則相匹配包括:對(duì)host進(jìn)行分 級(jí),逐級(jí)判斷host的每一級(jí)信息是否存在于HashMap中;以及在host的任一級(jí)信息存在于 HashMap中時(shí),對(duì)url采用遍歷及字符串匹配方法進(jìn)行匹配。
[0010] 進(jìn)一步地,Host Info實(shí)體對(duì)象的元素包括:host、host id和desc; Url Info實(shí)體對(duì)象 的元素包括:url、url id、url type、procode和dec; Get Inf o實(shí)體對(duì)象的元素包括:pType和 srcData; Todata 實(shí)體對(duì)象的元素包括:name、key string、ingdex 和code。
[0011 ]進(jìn)一步地,根據(jù)提取規(guī)則進(jìn)行http協(xié)議信息的提取包括:提取內(nèi)容來(lái)源;遍歷匹配 的提取規(guī)則中的Getlnfo實(shí)體對(duì)象,根據(jù)提取規(guī)則中的6^11^〇實(shí)體對(duì)象中的?17?6和 srcData判斷數(shù)據(jù)來(lái)源和處理方式來(lái)提取數(shù)據(jù)。
[0012] 進(jìn)一步地,從待分析數(shù)據(jù)中獲取一條數(shù)據(jù)的host和url之前,該方法還包括:對(duì)從 待分析數(shù)據(jù)中獲取的一條數(shù)據(jù)進(jìn)行有效性檢查,在該條數(shù)據(jù)中不含http信息、host或url 時(shí),將該條數(shù)據(jù)忽略,其中,僅當(dāng)該條數(shù)據(jù)中含有http信息、host和url時(shí),才執(zhí)行從該條數(shù) 據(jù)中獲取host和url的步驟。
[0013] 依據(jù)本發(fā)明的另一個(gè)方面,提供了一種http協(xié)議信息提取的裝置,該裝置包括:規(guī) 則加載器,用于載入用于http協(xié)議信息提取的提取規(guī)則,并存入內(nèi)存;規(guī)則解析器,用于從 待分析數(shù)據(jù)中獲取一條數(shù)據(jù)中的host和url,判斷獲取到的host和url是否與提取規(guī)則相匹 配,并在獲取到的host和url與提取規(guī)則相匹配時(shí),根據(jù)提取規(guī)則進(jìn)行http協(xié)議信息的提 取。
[0014] 進(jìn)一步地,提取規(guī)則為xml配置文件,規(guī)則加載器在執(zhí)行載入提取規(guī)則的步驟時(shí), 具體執(zhí)行以下步驟:采用SAXReader讀入xml配置文件;遍歷host標(biāo)簽,構(gòu)造 Host Info實(shí)體 對(duì)象;遍歷host標(biāo)簽下的url info標(biāo)簽,構(gòu)造 Url Info實(shí)體對(duì)象,并對(duì)協(xié)議小類代碼和自定義 類進(jìn)行有效性驗(yàn)證;遍歷url info標(biāo)簽下的get info標(biāo)簽,構(gòu)造 Get Info實(shí)體對(duì)象,對(duì)pType、 srcData屬性和自定義類進(jìn)行有效性驗(yàn)證;遍歷getinfo標(biāo)簽下的todata標(biāo)簽,構(gòu)造 Todata 實(shí)體對(duì)象,對(duì)keystring和自定義類進(jìn)行有效性驗(yàn)證;以及統(tǒng)計(jì)各類標(biāo)簽個(gè)數(shù)。
[0015] 進(jìn)一步地,規(guī)則加載器在執(zhí)行存入內(nèi)存的步驟時(shí),具體執(zhí)行以下步驟:在內(nèi)存中以 HashMap方式將載入的提取規(guī)則保存在內(nèi)存中,其中,HashMap方式中鍵為各標(biāo)簽的標(biāo)簽屬 性。
[0016] 通過(guò)本發(fā)明,提供了一種http協(xié)議信息提取的方法,該方法首先載入用于http協(xié) 議信息提取的提取規(guī)則,并存入內(nèi)存,在需要從大數(shù)據(jù)中提取http協(xié)議信息時(shí),從待分析數(shù) 據(jù)中獲取一條數(shù)據(jù)中的host和url,判斷獲取到的host和url是否與提取規(guī)則相匹配,如果 獲取到的host和url與提取規(guī)則相匹配,則根據(jù)匹配到的提取規(guī)則進(jìn)行http協(xié)議信息的提 取,提取后獲取下一條數(shù)據(jù)繼續(xù)進(jìn)行信息的提取;如果獲取到的host和url與提取規(guī)則不匹 配,則直接獲取下一條數(shù)據(jù),解決了現(xiàn)有技術(shù)中http協(xié)議在獲取協(xié)議內(nèi)容的有效信息時(shí),速 度慢、效率低的技術(shù)的問(wèn)題,達(dá)到了高效、簡(jiǎn)單地進(jìn)行http協(xié)議信息提取的效果。
[0017]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠 更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說(shuō)明】
[0018] 通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通 技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明 的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0019] 圖1是根據(jù)本發(fā)明第一實(shí)施例的http協(xié)議信息提取的方法的流程圖;
[0020] 圖2是根據(jù)本發(fā)明第二實(shí)施例的http協(xié)議信息提取的方法的流程圖;
[0021] 圖3是根據(jù)本發(fā)明第三實(shí)施例的http協(xié)議信息提取的裝置的框圖。
【具體實(shí)施方式】
[0022]下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明做進(jìn)一步說(shuō)明。需要指出的是,在不沖突 的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0023] 實(shí)施例一
[0024]首先,本發(fā)明實(shí)施例一提供了一種http協(xié)議信息提取的方法,該方法主要描述提 取http協(xié)議信息的過(guò)程,參見圖1,該方法可以包括以下步驟:
[0025]步驟S102:載入用于http協(xié)議信息提取的提取規(guī)則,并存入內(nèi)存。
[0026] 在進(jìn)行http協(xié)議信息提取時(shí),先將提取規(guī)則載入并存儲(chǔ)于內(nèi)存中。該提取規(guī)則按 照http協(xié)議的特點(diǎn),包括多條規(guī)則,分別與不同情況的host和url相匹配。
[0027] 步驟S104:從待分析數(shù)據(jù)中獲取一條數(shù)據(jù)中的host和url。
[0028] 待分析數(shù)據(jù)可以為大數(shù)據(jù),在處理時(shí),對(duì)待分析數(shù)據(jù)逐條進(jìn)行http協(xié)議信息的提 取。在該步驟中,針對(duì)每一條數(shù)據(jù),獲取數(shù)據(jù)中的host和url。
[0029] 步驟S106:判斷獲取到的host和url是否與提取規(guī)則相匹配。
[0030] 在獲取到host和url之后,將其余內(nèi)存中的提取規(guī)則逐條進(jìn)行匹配。
[0031] 步驟S108:在獲取到的host和url與提取規(guī)則相匹配時(shí),根據(jù)提取規(guī)則進(jìn)行http協(xié) 議ig息的提取。
[0032]當(dāng)匹配到一條提取規(guī)則時(shí),根據(jù)匹配到的提取規(guī)則進(jìn)行http協(xié)議信息的提取,提 取后獲取下一條數(shù)據(jù)繼續(xù)進(jìn)行信息的提取;如果獲取到的host和url與內(nèi)存中的提取規(guī)則 均不匹配,則返回步驟S104,直接獲取下一條數(shù)據(jù)進(jìn)行處理。
[0033]采用該實(shí)施例,預(yù)置http協(xié)議信息的提取規(guī)則,在進(jìn)行http協(xié)議信息的提取時(shí),利 用相匹配的提取規(guī)則進(jìn)行提取。通過(guò)自動(dòng)識(shí)別方法,在http協(xié)議快速更新變化的情況下,可 以高效、簡(jiǎn)單的對(duì)http協(xié)議內(nèi)容的有效信息進(jìn)行快速配置提取。而且在當(dāng)今大數(shù)據(jù)時(shí)代,更 能發(fā)揮其處理水平。本申請(qǐng)實(shí)施例適用于在數(shù)據(jù)體量巨大、數(shù)據(jù)類型繁多、價(jià)值密度低、處 理速度要求快的場(chǎng)景下。
[0034] 實(shí)施例二
[0035]該實(shí)施例為在實(shí)施例一的基礎(chǔ)上進(jìn)一步優(yōu)選的http協(xié)議信息提取的方法,參見 圖2,該方法可以包括以下步驟:
[0036]步驟S202:載入用于http協(xié)議信息提取的提取規(guī)則。
[0037] 優(yōu)選地,提取規(guī)則寫為xml配置文件的形式,在載入提取規(guī)則時(shí),采用以下步驟:
[0038] 采用SAXReader讀入xml配置文件;遍歷host標(biāo)簽,構(gòu)造 Host Inf 〇實(shí)體對(duì)象;遍歷 host標(biāo)簽下的url info標(biāo)簽,構(gòu)造 Url Info實(shí)體對(duì)象,并對(duì)協(xié)議小類代碼和自定義類進(jìn)行有 效性驗(yàn)證;遍歷111'1;[11;1^0標(biāo)簽下的861:;[11;1^0標(biāo)簽,構(gòu)造661:111;1^0實(shí)體對(duì)象,對(duì)口17口6、81'003七&屬 性和自定義類進(jìn)行有效性驗(yàn)證;遍歷getinfo標(biāo)簽下的todata標(biāo)簽,構(gòu)造 Todata實(shí)體對(duì)象, 對(duì)keystring和自定義類進(jìn)行有效性驗(yàn)證;以及統(tǒng)計(jì)各類標(biāo)簽個(gè)數(shù)。
[0039] 其中,Hostlnfo實(shí)體對(duì)象的元素包括:host、hostid和desc;UrlInfo實(shí)體對(duì)象的元 素包括:111'1、111'11(1、111'1丨7口6 41'0〇0(16和(16〇;661:111;1^0實(shí)體對(duì)象的元素包括417口6和 srcData; Todata 實(shí)體對(duì)象的元素包括:name、key string、ingdex 和code。
[0040] 例如,一個(gè)xml配置文件為:
[0041] Xml配置文件樣例如下:
[0042] 〈hostinfo host="hg0088 · com"hostid=" login-01"desc=" 皇冠娛樂(lè)城"〉
[0043] 〈url inf o url = " /app/member/login · php" url id = " 1" url type = " hg0088_ 1(^;!_11"卩1'〇(3〇(16="1(^;!_11_01"(168〇="登陸"&(^;!_〇1^卩6="&(^;!_〇11"&(^;!_〇11¥&1116="02">
[0044] 〈getinfo pType=,,PTCFG-CURLENCODE,,srcData=,,H-REQ-POSTDATA,,〉
[0045] 〈todata name =',un" key string=',username',index=',01',code =',userName',/>
[0046] 〈todata name =',pw" key string=',password" index=',02',code =',password" />
[0047] 〈/getinfo〉
[0048] </urlinfo>
[0049] 〈/hostinfo〉
[0050] 具體地,提取規(guī)則配置的元素說(shuō)明如下表一至表六。 ] 表一 Hostlnfo實(shí)體對(duì)象的元素
[0052]
[0053]備注:子元素為Urlinfo實(shí)體對(duì)象(允許多個(gè)),其中"必填"一欄中內(nèi)容為"是"時(shí), 表示為對(duì)象必須包括的元素,為"否"時(shí),可包括也可不包括,下列各表類似。
[0054] 表二Urlinfo實(shí)體對(duì)象的元素
[0055]
[0056] 備注:子元素為Getlnfo實(shí)體對(duì)象(允許多個(gè))。
[0057] 表三Getlnfo實(shí)體對(duì)象的元素
[0058]
[0059] 備注:當(dāng)pType為PTCFG_CLASS時(shí),class為Getlnfo實(shí)體對(duì)象的元素,子元素為 Todata實(shí)體對(duì)象。
[0060] 表四pType取值說(shuō)明表
[0061]
[0062] 表五srcData取值說(shuō)明表
[0064] 表六Todata實(shí)體對(duì)象的元素
[0066] 步驟S204:在內(nèi)存中以HashMap方式將載入的提取規(guī)則保存在內(nèi)存中。
[0067] 其中,HashMap方式中鍵為各標(biāo)簽的標(biāo)簽屬性。例如,在內(nèi)存中的數(shù)據(jù)組織方式為: ]\&1卩〈31:1';[1^,!1081:111;1^0>,該1]^。的1^7為:每條規(guī)則對(duì)應(yīng)的主機(jī)名,即:11〇81:;[11;1^0標(biāo)簽的1108七 屬性。
[0068]步驟S206:從待分析數(shù)據(jù)中獲取一條數(shù)據(jù)。
[0069]步驟S208:對(duì)該條數(shù)據(jù)進(jìn)行有效性檢查。
[0070] 在該條數(shù)據(jù)中不含http信息、host或url時(shí),也即無(wú)效時(shí),將該條數(shù)據(jù)忽略,返回步 驟S206,重新獲取一條數(shù)據(jù);在該條數(shù)據(jù)中還有http信息、host和url時(shí),也即有效時(shí),執(zhí)行 下述步驟S210。
[0071]步驟S210:獲取該條數(shù)據(jù)中的host和url 〇
[0072] 步驟S212:對(duì)host進(jìn)行分級(jí),逐級(jí)判斷host的每一級(jí)信息是否存在于HashMap中。
[0073] 例如,host = "mp3 · baidu · com",先判斷第一級(jí)信息mp3 · baidu · com是否存在于 HashMap中,如果沒(méi)有,再判斷第二級(jí)信息baidu.com是否存在于HashMap中,如果沒(méi)有,再 判斷第三級(jí)信息com是否在HashMap中。只要有一級(jí)信息存在于HashMap中,貝lj進(jìn)入步驟S214 進(jìn)行url匹配。
[0074] 步驟S214:在host的任一級(jí)信息存在于HashMap中時(shí),對(duì)url采用遍歷及字符串匹 配方法進(jìn)行匹配。
[0075] 具體匹配時(shí),可采用精確匹配方法和子串匹配方法。
[0076] 其中,精確匹配方法是指:當(dāng)數(shù)據(jù)中的host值與規(guī)則中緩存的host值精確對(duì)應(yīng)時(shí), 則采用精確匹配的方式進(jìn)行匹配。
[0077]子串匹配方法是指:如果數(shù)據(jù)中的host值與規(guī)則中緩存的host無(wú)法精確匹配時(shí), 貝1J將數(shù)據(jù)中的host逐級(jí)分離,將分離出的子串在與規(guī)則中緩存的host進(jìn)行匹配,以此類推, 直至全部子串匹配完為止。
[0078]步驟S216:在內(nèi)存中匹配到提取規(guī)則時(shí),根據(jù)提取規(guī)則進(jìn)行http協(xié)議信息的提取。 [0079] 在匹配不到提取規(guī)則時(shí),返回步驟S206,重新獲取一條數(shù)據(jù)。
[0080]具體地,在進(jìn)行信息提取時(shí),提取內(nèi)容來(lái)源,然后遍歷匹配的提取規(guī)則中的 〇61:11^0實(shí)體對(duì)象,根據(jù)提取規(guī)則中的661:11^0實(shí)體對(duì)象中的口17口6和81^〇3七3判斷數(shù)據(jù)來(lái)源 和處理方式來(lái)提取數(shù)據(jù),具體說(shuō)明如下表七和表八。
[0081 ] 表七
[0082]
[0083] 表八
[0085] 其中,Url方法是指:對(duì)返回的數(shù)據(jù)按照URL編碼規(guī)則進(jìn)行分解和解析,常用于POST 數(shù)據(jù)或 URL,源數(shù)據(jù)形如:username = 123&password = 666666&ef = j s,則只需將 username 和 password配置到tdata標(biāo)簽中的keystring健值中即可提取相應(yīng)內(nèi)容Dtodata形如:
[0086] 〈todata name =',un" keystring=',username',index=',01',code =',userName',/>
[0087] 〈todata name ="un" key string=" password" index="01" code =" password"/>
[0088] 中間字符串方法是指:對(duì)數(shù)據(jù)取中間字符串。源數(shù)據(jù)形如:username = 01 ; tracknick= 123456 ;password = 666666
[0089] todata必須包含I # I字樣,todata形如:
[0090] 〈todata name =" nn" key string = " tracknick = | # | ;" index =" 01" code = " userName',/>
[0091] 類方法是指:對(duì)返回的數(shù)據(jù),指定Java類進(jìn)行處理,class屬性配置類名。
[0092] Cookie方法是指:對(duì)返回的數(shù)據(jù)從cookie中獲取內(nèi)容進(jìn)行處理^檢索" Cookie:"找 到行尾,截取子串加快處理速度。
[0093] 表單方法是指:對(duì)返回的數(shù)據(jù)按照表單的形式進(jìn)行處理,源數(shù)據(jù)形如:
[0094] ------WebKitFormBoundaryVzclpgopw
[0095] Content-Di spos it ion: form-data; name =',Txt-petname',
[0096] Admin
[0097] ------WebKitFormBoundaryVzclpgopw
[0098] Content-Di spos it ion: form-data; name =',Txt-password"
[0099] 666666
[0100] todata 形如:
[0101] 〈todata name="nn"keystring = "Txt_petname" index = "01"code = " userName''/>
[0102] Json方法是指:對(duì)返回的數(shù)據(jù)進(jìn)行j son處理,源數(shù)據(jù)形如:
[0103] {"username":"1111111",password:"666666"}
[0104] todata 形如:
[0105] 〈todata name ='' nn" key string='' username" index='' 01" code ='' userName''/>
[0106] Xml方法是指:對(duì)返回的數(shù)據(jù)進(jìn)行XML處理,todata形如:
[0107] 〈todata name ="nn" key string = "_BA_ | # | message | # | from" index = " 01" code ="userName"/>
[0108] http頭部方法是指:對(duì)返回的數(shù)據(jù)按照http頭的方式進(jìn)行處理,todata形如:
[0109] 〈todata name=" imei"keystring="Connection" index="01"code=" IMEI"/>
[0110] 以上是對(duì)本發(fā)明所提供的http協(xié)議信息提取的方法進(jìn)行的描述。下面將對(duì)本發(fā)明 提供的http協(xié)議信息提取的裝置進(jìn)行描述,需要說(shuō)明的是,該裝置可用于執(zhí)行上述任意一 種http協(xié)議彳目息提取的方法。
[0111]實(shí)施例三
[0112] 與本發(fā)明實(shí)施例一提供的http協(xié)議信息提取的方法相對(duì)應(yīng),本發(fā)明實(shí)施例還提供 了一種http協(xié)議信息提取的裝置,參見圖3,該裝置可以包括規(guī)則加載器和規(guī)則解析器。
[0113] 其中,規(guī)則加載器用于載入用于http協(xié)議信息提取的提取規(guī)則,并存入內(nèi)存,具體 過(guò)程如上文實(shí)施例二所述,此處不再贅述,為滿足http協(xié)議內(nèi)容的多樣性及復(fù)雜性,還可以 根據(jù)具體要求實(shí)現(xiàn)個(gè)性化提取接口,進(jìn)而達(dá)到自定義個(gè)性化提取;規(guī)則解析器用于從待分 析數(shù)據(jù)中獲取一條數(shù)據(jù)中的host和url,判斷獲取到的host和url是否與所述提取規(guī)則相 匹配,并在所述獲取到的host和url與所述提取規(guī)則相匹配時(shí),根據(jù)所述提取規(guī)則進(jìn)行http 協(xié)議ig息的提取。
[0114] 具體地,該裝置處理來(lái)自網(wǎng)頁(yè)訪問(wèn)的數(shù)據(jù),根據(jù)提取規(guī)則提取信息。如圖3所示,海 量數(shù)據(jù)進(jìn)來(lái)后調(diào)用http信息提取的主入口。先進(jìn)行數(shù)據(jù)有效性檢查:若數(shù)據(jù)中不含http協(xié) 議信息、不含host或不含url,則該條數(shù)據(jù)直接忽略。否則,采用如下的流程進(jìn)行處理:
[0115] a)從海量數(shù)據(jù)中獲取host和url
[0116] b)調(diào)用規(guī)則解析器的規(guī)則驗(yàn)證方法判斷是否符合提取規(guī)則,若不符合則直接返 回,繼續(xù)下一條數(shù)據(jù);若符合則調(diào)用規(guī)則解析器的規(guī)則解析方法進(jìn)行信息提取。
[0117] c)若HTTP類型為get,則刪除get的內(nèi)容。
[0118] d)判斷是否提取到數(shù)據(jù),若未提取到數(shù)據(jù)則直接返回;若提取到有效數(shù)據(jù)將數(shù)據(jù) 存入上下文。
[0119] 其中,規(guī)則解析器的主要實(shí)現(xiàn)兩個(gè)核心方法為規(guī)則驗(yàn)證、規(guī)則解析,用到的外部數(shù) 據(jù)(緩存):規(guī)則緩存、字段代碼和鍵名對(duì)應(yīng)緩存。
[0120] 關(guān)于規(guī)則驗(yàn)證,主要是判斷傳入的host和srcUrl是否與提取規(guī)則匹配。如果沒(méi)有 找到匹配的規(guī)則,則返回空;如果匹配,則返回對(duì)應(yīng)規(guī)則的Ur 1 Inf 〇實(shí)體對(duì)象。
[0121] 關(guān)于規(guī)則匹配方式,采用先匹配host,再匹配url的方式。host采用逐級(jí)剝離匹配 的方式。只要有一級(jí)信息匹配,則進(jìn)入url匹配。url采用遍歷及字符串匹配方法,匹配支持 精確匹配和子串匹配兩種。
[0122] 優(yōu)選地,當(dāng)host和url都不符合規(guī)則時(shí),進(jìn)入特殊根規(guī)則匹配。根規(guī)則,一般寫在配 置xml文件的第一條,約定其host為:host = 〃R00T_RULE_N0_H0ST 〃??梢杂糜诤雎灾鳈C(jī)名 的,ur 1模板匹配,主要用于網(wǎng)站模板,例如:所有ur 1中包含app/memb er的鏈接。
[0123] 關(guān)于規(guī)則解析,主要是根據(jù)規(guī)則提取信息,并將提取的信息回填到上下文中。具體 提取規(guī)則見上文實(shí)施例二所述,此處不再贅述。
[0124] 從以上各實(shí)施例的描述中,可以看出,本發(fā)明實(shí)施例實(shí)現(xiàn)了如下技術(shù)效果:通過(guò) 自動(dòng)識(shí)別方法,在http協(xié)議快速更新變化的情況下,可以高效、簡(jiǎn)單的對(duì)http協(xié)議內(nèi)容的有 效信息進(jìn)行快速提取。而且在當(dāng)今大數(shù)據(jù)時(shí)代,更能發(fā)揮其處理水平。
[0125] 需要說(shuō)明的是,上述裝置或系統(tǒng)實(shí)施例屬于優(yōu)選實(shí)施例,所涉及的單元和模塊并 不一定是本申請(qǐng)所必須的。
[0126] 本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與 其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于本申請(qǐng)的裝 置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí) 施例的部分說(shuō)明即可。
[0127] 以上所述,僅為本發(fā)明較佳的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋 在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1. 一種http協(xié)議信息提取的方法,其特征在于,包括: 載入用于http協(xié)議信息提取的提取規(guī)則,并存入內(nèi)存; 從待分析數(shù)據(jù)中獲取一條數(shù)據(jù)中的host和url; 判斷獲取到的host和url是否與所述提取規(guī)則相匹配;以及 在所述獲取到的host和url與所述提取規(guī)則相匹配時(shí),根據(jù)所述提取規(guī)則進(jìn)行http協(xié) 議ig息的提取。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述提取規(guī)則為xml配置文件,載入所述提 取規(guī)則包括: 采用SAXReader讀入所述xml配置文件; 遍歷host標(biāo)簽,構(gòu)造 Hostlnfo實(shí)體對(duì)象; 遍歷host標(biāo)簽下的url info標(biāo)簽,構(gòu)造 Ur 1 Info實(shí)體對(duì)象,并對(duì)協(xié)議小類代碼和自定義 類進(jìn)行有效性驗(yàn)證; 遍歷111'1;[11;1^0標(biāo)簽下的861:;[11;1^0標(biāo)簽,構(gòu)造661:111;1^0實(shí)體對(duì)象,對(duì)口17口6、81'〇〇3丨3屬性和 自定義類進(jìn)行有效性驗(yàn)證; 遍歷get info標(biāo)簽下的todata標(biāo)簽,構(gòu)造 Todata實(shí)體對(duì)象,對(duì)key string和自定義類進(jìn) 行有效性驗(yàn)證;以及 統(tǒng)計(jì)各類標(biāo)簽個(gè)數(shù)。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,在載入所述提取規(guī)則后,存入內(nèi)存包括: 在內(nèi)存中以HashMap方式將載入的所述提取規(guī)則保存在內(nèi)存中,其中,所述HashMap方 式中鍵為各標(biāo)簽的標(biāo)簽屬性。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,判斷獲取到的host和url是否與所述提取 規(guī)則相匹配包括: 對(duì)host進(jìn)行分級(jí),逐級(jí)判斷host的每一級(jí)信息是否存在于HashMap中;以及 在host的任一級(jí)信息存在于HashMap中時(shí),對(duì)url采用遍歷及字符串匹配方法進(jìn)行匹 配。5. 根據(jù)權(quán)利要求4所述的方法,其特征在于, 所述此81:111;1^0實(shí)體對(duì)象的元素包括:11081:、11081:丨(1和(168(3; 所述 Url Info 實(shí)體對(duì)象的元素包括:url、ur lid、url type、procode 和dec; 所述Ge t Info實(shí)體對(duì)象的元素包括:pType和sr cData; 所述Todata實(shí)體對(duì)象的元素包括:name、keystring、ingdex和code。6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,根據(jù)所述提取規(guī)則進(jìn)行http協(xié)議信息的提 取包括: 提取內(nèi)容來(lái)源; 遍歷匹配的所述提取規(guī)則中的Getlnfo實(shí)體對(duì)象,根據(jù)所述提取規(guī)則中的Getlnfo實(shí)體 對(duì)象中的pType和srcData判斷數(shù)據(jù)來(lái)源和處理方式來(lái)提取數(shù)據(jù)。7. 根據(jù)權(quán)利要求1所述的方法,其特征在于,從待分析數(shù)據(jù)中獲取一條數(shù)據(jù)的host和 url之前,所述方法還包括: 對(duì)從待分析數(shù)據(jù)中獲取的一條數(shù)據(jù)進(jìn)行有效性檢查,在該條數(shù)據(jù)中不含http信息、 host或url時(shí),將該條數(shù)據(jù)忽略, 其中,僅當(dāng)該條數(shù)據(jù)中含有http信息、host和url時(shí),才執(zhí)行從該條數(shù)據(jù)中獲取host和 url的步驟。8. -種http協(xié)議信息提取的裝置,其特征在于,包括: 規(guī)則加載器,用于載入用于http協(xié)議信息提取的提取規(guī)則,并存入內(nèi)存; 規(guī)則解析器,用于從待分析數(shù)據(jù)中獲取一條數(shù)據(jù)中的host和url,判斷獲取到的host和 url是否與所述提取規(guī)則相匹配,并在所述獲取到的host和url與所述提取規(guī)則相匹配時(shí), 根據(jù)所述提取規(guī)則進(jìn)行http協(xié)議信息的提取。9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述提取規(guī)則為xml配置文件,所述規(guī)則加 載器在執(zhí)行載入提取規(guī)則的步驟時(shí),具體執(zhí)行以下步驟: 采用SAXReader讀入所述xml配置文件; 遍歷host標(biāo)簽,構(gòu)造 Hostlnfo實(shí)體對(duì)象; 遍歷host標(biāo)簽下的url info標(biāo)簽,構(gòu)造 Url Info實(shí)體對(duì)象,并對(duì)協(xié)議小類代碼和自定義 類進(jìn)行有效性驗(yàn)證; 遍歷url info標(biāo)簽下的get info標(biāo)簽,構(gòu)造 Get Info實(shí)體對(duì)象,對(duì)pType、srcData屬性和 自定義類進(jìn)行有效性驗(yàn)證; 遍歷get info標(biāo)簽下的todata標(biāo)簽,構(gòu)造 Todata實(shí)體對(duì)象,對(duì)key string和自定義類進(jìn) 行有效性驗(yàn)證;以及 統(tǒng)計(jì)各類標(biāo)簽個(gè)數(shù)。10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述規(guī)則加載器在執(zhí)行存入內(nèi)存的步驟 時(shí),具體執(zhí)行以下步驟: 在內(nèi)存中以HashMap方式將載入的所述提取規(guī)則保存在內(nèi)存中,其中,所述HashMap方 式中鍵為各標(biāo)簽的標(biāo)簽屬性。
【文檔編號(hào)】G06F17/30GK106095772SQ201610328706
【公開日】2016年11月9日
【申請(qǐng)日】2016年5月18日
【發(fā)明人】朱海勇, 鄢小征, 欒江霞, 周成祖
【申請(qǐng)人】廈門市美亞柏科信息股份有限公司