專(zhuān)利名稱(chēng)::超文本數(shù)據(jù)訪(fǎng)問(wèn)接口解析規(guī)則的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般的涉及通信領(lǐng)域。更具體的,本發(fā)明涉及用于第三方應(yīng)用系統(tǒng)讀取網(wǎng)頁(yè)超文本數(shù)據(jù)。
背景技術(shù):
:毋庸置疑,網(wǎng)絡(luò)的迅速發(fā)展己經(jīng)影響到人們的日常生活?,F(xiàn)在更多的人習(xí)慣從網(wǎng)站上閱讀每日的新聞時(shí)事,而不是通過(guò)廣播或則報(bào)刊等傳統(tǒng)媒體。還可通過(guò)網(wǎng)站查找所需要的專(zhuān)業(yè)資料等。所有這一切都成為了當(dāng)今的時(shí)尚。這一切網(wǎng)絡(luò)的發(fā)展首要?dú)w功于超文本(hypertext)的發(fā)展,每一張網(wǎng)頁(yè)都是以超文本的形式描述的。隨著提供網(wǎng)頁(yè)服務(wù)的網(wǎng)站快速發(fā)展,越來(lái)越多的網(wǎng)頁(yè)資料大大豐富了網(wǎng)絡(luò),甚至出現(xiàn)了專(zhuān)門(mén)提供搜索網(wǎng)頁(yè)的網(wǎng)站。--般情況下,用戶(hù)通過(guò)瀏覽器來(lái)訪(fǎng)問(wèn)網(wǎng)頁(yè)。但是,隨著信息化的發(fā)展和數(shù)據(jù)交互的需求,第三方應(yīng)用系統(tǒng)也需要訪(fǎng)問(wèn)網(wǎng)頁(yè),并需將其中部分?jǐn)?shù)據(jù)摘取下來(lái)另做它用。目前,第三方應(yīng)用程序一般通過(guò)以下方法來(lái)讀取網(wǎng)頁(yè)超文本數(shù)據(jù)1、在原有網(wǎng)頁(yè)的基礎(chǔ)上開(kāi)發(fā)WEBSERVICE服務(wù),應(yīng)用系統(tǒng)通過(guò)WEBSERVICE接口來(lái)讀取數(shù)據(jù)。其缺點(diǎn)在于需要另行開(kāi)發(fā)WEBSERVICE服務(wù)。2、根據(jù)需求開(kāi)發(fā)專(zhuān)門(mén)針對(duì)某網(wǎng)頁(yè)超文本數(shù)據(jù)的解析接口。其缺點(diǎn)在于不具有通用性,只能用于當(dāng)前指定格式的超文本數(shù)據(jù)。本發(fā)明主要解決以上問(wèn)題,本發(fā)明超文本數(shù)據(jù)訪(fǎng)問(wèn)接口解析規(guī)則讓第三方應(yīng)用程序以通用性的方法讀取網(wǎng)頁(yè)數(shù)據(jù),而且不需要對(duì)原有網(wǎng)頁(yè)做修改和增加開(kāi)發(fā)WEBSERVICE,這將極大的方便于第三方系統(tǒng)訪(fǎng)問(wèn)超文本數(shù)據(jù)。
發(fā)明內(nèi)容本發(fā)明主要在于提供一個(gè)通用、便捷的讀取網(wǎng)頁(yè)超文本數(shù)據(jù)方法,首先依據(jù)http協(xié)議獲取到網(wǎng)頁(yè)源代碼(即超文本數(shù)據(jù)),然后依據(jù)數(shù)據(jù)范圍設(shè)置代碼區(qū)間,從源代碼中分離出區(qū)間代碼。再根據(jù)業(yè)務(wù)規(guī)則所需讀取的數(shù)據(jù)制訂語(yǔ)法表達(dá)式,最后把區(qū)間代碼和語(yǔ)法表達(dá)式提交給解析系統(tǒng),解析完畢返回?cái)?shù)據(jù)。當(dāng)業(yè)務(wù)規(guī)則或者網(wǎng)頁(yè)數(shù)據(jù)發(fā)生變化時(shí),只需要調(diào)整語(yǔ)法表達(dá)式就可以了,而不需要對(duì)原系統(tǒng)進(jìn)行修改和編譯。語(yǔ)法表達(dá)式就是用一個(gè)"字符串",其用來(lái)描述一個(gè)特征,然后去驗(yàn)證一個(gè)數(shù)據(jù)流是否包含符合這個(gè)特征的字符串,并將其中括號(hào)部分?jǐn)?shù)據(jù)作為返回值取出來(lái)。比如表達(dá)式"a(b+)"描述的特征是"一個(gè)'a'和任意個(gè)'b'",那么數(shù)據(jù)流'xyabc','xyabbc','xyabbbbbbbbbbc'中都包含了符合這個(gè)特征的字符串,并且依次取出的返回值是b,bb,bbbbbbbbbb。以下文字將這樣的驗(yàn)證過(guò)程簡(jiǎn)稱(chēng)為匹配,驗(yàn)證成功則為匹配成功,驗(yàn)證失敗則為匹配失敗。語(yǔ)法表達(dá)式的定義規(guī)則如下1、字母、數(shù)字、漢字、下劃線(xiàn)、以及沒(méi)有特殊定義的標(biāo)點(diǎn)符號(hào),都是"普通字符"。表達(dá)式中的普通字符,在驗(yàn)證一個(gè)數(shù)據(jù)流的時(shí)候,匹配與之相同的一個(gè)字符。2、一些不便書(shū)寫(xiě)的字符,采用在前面加"\"的方法,這些轉(zhuǎn)義字符的匹配方法與〃普通字符"是類(lèi)似的。<table>tableseeoriginaldocumentpage4</column></row><table>3、語(yǔ)法表達(dá)式中的一些表示方法,可以匹配〃多種字符"其中的任意一個(gè)字符。比如,表達(dá)式"vr可以匹配任意一個(gè)數(shù)字。雖然可以匹配其中任意字符,但是只能是一個(gè),不是多個(gè)。<table>tableseeoriginaldocumentpage4</column></row><table>4、使用方括號(hào)[]包含一系列字符,能夠匹配其中任意一個(gè)字符。用[']包含一系列字符,則能夠匹配其中字符之外的任意一個(gè)字符。同樣的道理,雖然可以匹配其中任意一個(gè),但是只能是一個(gè),不是多個(gè)。表達(dá)式可匹配匹配〃a〃或〃b〃或〃5〃或〃@〃匹配〃a〃,〃b〃,〃c〃之外的任意一個(gè)字符匹配〃f""'k"之間的任意一個(gè)字母匹配〃A一〃F",〃0""3〃之外的任意一個(gè)字符5、在表達(dá)式加上修飾匹配次數(shù)的特殊符號(hào),那么不用重復(fù)書(shū)寫(xiě)表達(dá)式就可以重復(fù)匹配。使用方法是〃次數(shù)修飾"放在"被修飾的表達(dá)式"后邊。比如"[bcd][bcd]"可以寫(xiě)成〃[bcd]{2}〃。表達(dá)式作用{n}表達(dá)式重復(fù)n次,比如〃>{2}〃相當(dāng)于〃\w\w〃;〃&{5}〃相當(dāng)于〃aaaaa〃{m,n}表達(dá)式至少重復(fù)m次,最多重復(fù)n次,比如"ba{1,3}"可以匹配"ba"或"baa"或〃b朋a〃{m,}表達(dá)式至少重復(fù)m次,比如"\w\d{2,}"可以匹配〃al2〃,〃—456〃,〃M12344"...匹配表達(dá)式0次或者1次,相當(dāng)于{0,1},比如"a[cd]"可以匹配〃a〃,〃3C〃,〃3d〃+表達(dá)式至少出現(xiàn)1次,相當(dāng)于U,},比如〃a+b"可以匹配"ab","aab","aaab"...*表達(dá)式不出現(xiàn)或出現(xiàn)任意次,相當(dāng)于{0,},比如、、b"可以匹配〃b〃,〃'"b〃...代碼區(qū)間包括開(kāi)始位置和結(jié)束位置,將源代碼依據(jù)代碼區(qū)間的設(shè)置從中分離出區(qū)間代碼,主要目的在于縮小數(shù)據(jù)范圍,提高匹配的準(zhǔn)確性。代碼區(qū)間的開(kāi)始位置和結(jié)束位置同時(shí)也是語(yǔ)法表達(dá)式。圖l是本發(fā)明的系統(tǒng)流程圖首先從節(jié)點(diǎn)A01開(kāi)始,依據(jù)HTTP協(xié)議請(qǐng)求指定的網(wǎng)頁(yè)。進(jìn)入A02點(diǎn),獲取網(wǎng)頁(yè)服務(wù)器返回的超文本數(shù)據(jù)。進(jìn)入A03點(diǎn),對(duì)源代碼設(shè)置區(qū)間。進(jìn)入A04點(diǎn),獲取到目標(biāo)代碼。進(jìn)入A05點(diǎn),制定語(yǔ)法表達(dá)式并進(jìn)行提交。進(jìn)入A06點(diǎn),獲取到反饋結(jié)果。圖2是一個(gè)主要流程的概要從獲取到超文本數(shù)據(jù)開(kāi)始,然后設(shè)置區(qū)間和制定語(yǔ)法表達(dá)式,將目標(biāo)代碼和語(yǔ)法表達(dá)式提交給語(yǔ)法解析器,解析完畢返回?cái)?shù)據(jù)。具體實(shí)施例方式以下舉例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式。設(shè)想某網(wǎng)站提供的網(wǎng)頁(yè)上有A、B、C三個(gè)產(chǎn)品的價(jià)格,其數(shù)據(jù)以表格的形式排布通過(guò)網(wǎng)頁(yè)進(jìn)行瀏覽,通過(guò)瀏覽器輸入地址htt。:〃w麗.xvz.com/list,htm后頁(yè)面以如下格式顯示三個(gè)產(chǎn)品的價(jià)格信息。Product31200Productb3500Productc3200現(xiàn)在某ERP系統(tǒng)需要讀取并保存該產(chǎn)品價(jià)格信息,依據(jù)下面的步驟則可以快速和方便的讀取到數(shù)據(jù),并且能夠適應(yīng)網(wǎng)頁(yè)的變動(dòng)。首先依據(jù)HTTP協(xié)議發(fā)出GET指令后獲取到該網(wǎng)頁(yè)的超文本數(shù)據(jù),源代碼如下.Source="<html〉<title〉productlist</title〉〈body〉<table〉,〈tr〉〈td〉producta</td〉〈td〉1200</td〉</tr〉<trXtd>productb</td〉<td〉3500</td〉</tr><tr〉<td〉productc</td〉<td>3200</td〉</tr〉</table〉</body〉</html〉"其次,指定區(qū)間開(kāi)始位置和結(jié)束位置,.Begin:"〈table〉".End:"〈/table〉",在.Source中找到匹配.Begin的位置,繼續(xù)査找匹配.End的位置,從.Source中將此區(qū)間的內(nèi)容取出作為目標(biāo)代碼Target="〈tr〉〈td〉producta〈/td〉<td〉1200</td〉〈/tr〉〈tr〉〈td〉productb〈/td>〈td〉3500〈/td>〈/tr>〈trXtd〉productc〈/td〉〈td〉3200</tdX/tr〉"接著,制定語(yǔ)法表達(dá)式為.Lex="<tr>〈td〉(.+)</td>〈td〉(.+)</td〉〈/tr>"語(yǔ)法分析器根據(jù)語(yǔ)法表達(dá)式.Lex到目標(biāo)代碼.Traget中進(jìn)行循環(huán)匹配,直到匹配結(jié)束,一共成功匹配3次,返回的數(shù)據(jù)依次如下1、producta_12002、productb-35003、productc-3200依據(jù)上述步驟即可實(shí)現(xiàn)快速和方便的讀取到所需要的數(shù)據(jù),當(dāng)目標(biāo)網(wǎng)頁(yè)發(fā)生變化的時(shí)候,只需要調(diào)整語(yǔ)法表達(dá)式即可。設(shè)想網(wǎng)頁(yè)被修改了,產(chǎn)品和價(jià)格中間多了一列型號(hào),獲取到的源代碼就發(fā)生了變化,設(shè)想其中表格部分變化如下<table>〈trXtd〉producta〈/td〉〈td>ypc〈/td〉〈td〉1200〈/tdX/tr〉〈tr〉〈td〉productb</td〉〈td>xpc〈/td〉〈td>3500〈/td>〈/tr>〈tr〉〈td〉productc〈/td〉<td〉tpc〈/td〉〈td〉3200</td〉</tr〉〈/table〉只需要將.Lex語(yǔ)法表達(dá)式更改為.Lex=〈trXtd〉(.+)</td〉〈td〉.+</td〉<td〉(.+)</td〉</tr〉不需要對(duì)原系統(tǒng)做任何修改,依據(jù)新的語(yǔ)法表達(dá)式即可以匹配出新格式下的數(shù)據(jù)來(lái)。權(quán)利要求1、超文本數(shù)據(jù)訪(fǎng)問(wèn)接口解析規(guī)則,包括對(duì)超文本數(shù)據(jù)設(shè)置代碼區(qū)間;根據(jù)業(yè)務(wù)規(guī)則所需讀取的數(shù)據(jù)制訂語(yǔ)法表達(dá)式;將區(qū)間數(shù)據(jù)和語(yǔ)法表達(dá)式進(jìn)行解析,獲取數(shù)據(jù)返回值;2、如權(quán)利要求l所述的超文本數(shù)據(jù)訪(fǎng)問(wèn)接口解析規(guī)則,其中,超文本數(shù)據(jù)設(shè)置代碼區(qū)間包括區(qū)間開(kāi)始和區(qū)間結(jié)束,區(qū)間結(jié)束屬于可選擇項(xiàng)。代碼區(qū)間其本身也是語(yǔ)法表達(dá)式。3、如權(quán)利要求l所述的超文本數(shù)據(jù)訪(fǎng)問(wèn)接口解析規(guī)則,其中,根據(jù)業(yè)務(wù)規(guī)則所需讀取的數(shù)據(jù)制訂語(yǔ)法表達(dá)式,包括完整的語(yǔ)法表達(dá)式規(guī)則。全文摘要本發(fā)明主要在于提供一個(gè)通用、便捷的讀取網(wǎng)頁(yè)超文本數(shù)據(jù)方法,首先依據(jù)http協(xié)議獲取到網(wǎng)頁(yè)源代碼(即超文本數(shù)據(jù)),然后依據(jù)數(shù)據(jù)范圍設(shè)置代碼區(qū)間,從源代碼中分離出區(qū)間代碼。再根據(jù)業(yè)務(wù)規(guī)則所需讀取的數(shù)據(jù)制訂語(yǔ)法表達(dá)式,最后把區(qū)間代碼和語(yǔ)法表達(dá)式提交給解析系統(tǒng),解析完畢返回?cái)?shù)據(jù)。當(dāng)業(yè)務(wù)規(guī)則或者網(wǎng)頁(yè)數(shù)據(jù)發(fā)生變化時(shí),只需要調(diào)整語(yǔ)法表達(dá)式就可以了,而不需要對(duì)原系統(tǒng)進(jìn)行修改和編譯。文檔編號(hào)H04L29/06GK101640663SQ20081002283公開(kāi)日2010年2月3日申請(qǐng)日期2008年7月30日優(yōu)先權(quán)日2008年7月30日發(fā)明者請(qǐng)求不公開(kāi)姓名申請(qǐng)人:南京中帕軟件有限公司