本發(fā)明屬于信息與數(shù)據(jù)處理領(lǐng)域,特別地涉及一種html頁面的信息采集方法。
背景技術(shù):
隨著信息化程度不斷加深,企業(yè)對情報信息化集成的渴求也日益強烈;互聯(lián)網(wǎng)持續(xù)增長的信息資源蘊含了巨量的具有商業(yè)價值的信息,成為重要的情報信息源頭。目前,html頁面的信息采集的相關(guān)產(chǎn)品為數(shù)不多,且產(chǎn)品對用戶本身的基礎(chǔ)信息設(shè)施要求高,實施周期長,系統(tǒng)建設(shè)和維護成本高,主要客戶是超大型企業(yè)和政府,普通企業(yè)無
力承受。
目前在客戶機、服務(wù)端(C/S)模型下,服務(wù)端可以直接獲取客戶機上提交的表單。 但對于第三方應(yīng)用開發(fā),由于服務(wù)端是不可再更改的,這時就無法直接進行html表單統(tǒng)計。
技術(shù)實現(xiàn)要素:
為解決上述問題,本發(fā)明的目的在于提供一種無需更改服務(wù)端就能實現(xiàn)html頁面信息采集的方法。
為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案為:
一種html頁面的信息采集方法,包括以下步驟:
S1.采用BHO插件監(jiān)聽方式或npapi插件監(jiān)聽方式,監(jiān)聽網(wǎng)頁表單提交事件,并在事件處理中獲取表單元素信息;
S2.BHO插件或npapi插件將獲取到的元素信息進行加密處理;
S3.將加密處理過的信息,傳輸?shù)椒?wù)器端。
進一步的,在S1中,對于IE內(nèi)核的瀏覽器采用BHO插件監(jiān)聽方式;對于非IE內(nèi)核的瀏覽器采用npapi插件監(jiān)聽方式。
進一步的,BHO插件監(jiān)聽方式包括以下步驟:
S111.BHO插件監(jiān)聽瀏覽器的html文檔加載完畢事件;
S112.在html文檔加載完畢事件中,獲取引發(fā)鼠標(biāo)點擊事件的對應(yīng)元素;
S113.通過該元素的com接口,獲取元素信息;
S114.將獲取到的元素信息保存在BHO插件中,準(zhǔn)備發(fā)往服務(wù)器。
優(yōu)選地,S112中,若引發(fā)鼠標(biāo)點擊事件的是表單提交按鈕,對應(yīng)多個元素,則選取當(dāng)前html文檔需要的對應(yīng)元素。
進一步的,npapi插件監(jiān)聽方式包括以下步驟:
S121.瀏覽器擴展引用npapi插件,啟動npapi插件中一個類的實例,注入執(zhí)行javascript腳本;
S122.在執(zhí)行javascript腳本過程中,監(jiān)聽表單提交按鈕的點擊事件;
S123.在javascript腳本的點擊事件處理函數(shù)中,獲取引發(fā)鼠標(biāo)點擊事件的對應(yīng)元素信息;
S124.javascript腳本將元素信息傳給npapi插件,并準(zhǔn)備發(fā)往服務(wù)器。
進一步的,在S2中,所述的加密處理為:
BHO插件或npapi插件將信息進行格式化,對其中的敏感字段進行加密,并對格式化后的信息報文進行簽名,服務(wù)器端對簽名進行驗證。
優(yōu)選地,信息按照json格式進行格式化。
優(yōu)選地,對敏感字段的加密方式為RSA公鑰,服務(wù)器端使用私鑰解密;對信息報文使用RSA私鑰簽名,服務(wù)器端使用RSA公鑰驗證簽名。
優(yōu)選地,在S3中,傳輸協(xié)議使用http協(xié)議。
本發(fā)明的有益效果是:
(1)本方法無需在網(wǎng)站服務(wù)端做出任何更改,只需在客戶機上安裝插件,即可獲取表單信息,并發(fā)送到服務(wù)器進行統(tǒng)計;信息提取成本低,可大大提高信息錄入的速度和準(zhǔn)確性。
(2)本方法具有網(wǎng)站無關(guān)性,對于任意需要采集信息的html頁面,都可以使用本方法直接采集信息。
附圖說明
圖1為本發(fā)明實施例中的html信息采集流程圖;
圖2為本發(fā)明實施例中的BHO插件監(jiān)聽方式流程圖;
圖3為本發(fā)明實施例中的npapi插件監(jiān)聽方式流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
相反,本發(fā)明涵蓋任何由權(quán)利要求定義的在本發(fā)明的精髓和范圍上做的替代、修改、等效方法以及方案。進一步,為了使公眾對本發(fā)明有更好的了解,在下文對本發(fā)明的細(xì)節(jié)描述中,詳盡描述了一些特定的細(xì)節(jié)部分。對本領(lǐng)域技術(shù)人員來說沒有這些細(xì)節(jié)部分的描述也可以完全理解本發(fā)明。
本發(fā)明實施例的html信息錄入方法流程如圖 1 所示。
一種html頁面的信息采集方法,包括以下步驟:
S1.采用BHO插件監(jiān)聽方式或npapi插件監(jiān)聽方式,監(jiān)聽網(wǎng)頁表單提交事件,并在事件處理中獲取表單元素信息;
S2.BHO插件或npapi插件將獲取到的元素信息進行加密處理;
S3.將加密處理過的信息,傳輸?shù)椒?wù)器端。
在S1中,對于IE內(nèi)核的瀏覽器采用BHO插件監(jiān)聽方式;對于非IE內(nèi)核的瀏覽器采用npapi插件監(jiān)聽方式。
其中,BHO插件是針對IE瀏覽器的插件,BHO插件是一種com組件,實現(xiàn)了IObjectWithSite接口。并需要根據(jù)瀏覽器是32位還是64位,到注冊表\\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects 注冊BHO插件的guid。
BHO插件監(jiān)聽方式包括以下步驟:
S111.BHO插件監(jiān)聽瀏覽器的html文檔加載完畢事件;實際上上是某個提交按鈕的點擊事件,事件ID: DISPID_HTMLDOCUMENTEVENTS2_ONCLICK。
S112.在html文檔加載完畢事件中,獲取引發(fā)鼠標(biāo)點擊事件的對應(yīng)元素;若引發(fā)鼠標(biāo)點擊事件的是表單提交按鈕,對應(yīng)多個元素,則選取當(dāng)前html文檔需要的對應(yīng)元素。
S113.通過該元素的com接口,獲取元素信息;使用IHTMLDocument2的get_all函數(shù),即可獲取所有的元素接口IHTMLElement,使用該接口的getAttribute方法,即可獲取元素內(nèi)容,即元素信息。
S114.將獲取到的元素信息保存在BHO插件中,準(zhǔn)備發(fā)往服務(wù)器。
其中,npapi插件即網(wǎng)景插件應(yīng)用程序編程接口,是遵循網(wǎng)景通信公司(Netscape Communications Corporation)所制定規(guī)范的一組單純的 C Plugin應(yīng)用程序接口,主要針對非IE瀏覽器。2004年底時,各家瀏覽器公司(IE, Opera, Mozilla 等) 都同意支援NPRuntime延伸 API(應(yīng)用程序編程接口)以支援Scriptability,所以目前需要以NPRuntime API為基礎(chǔ),才能使Plugin跨越各種瀏覽器。
將包含npapi插件的擴展安裝到瀏覽器上,當(dāng)瀏覽器啟動后,會在默認(rèn)的plugins文件夾中加載npapi插件,并讀取插件的MimeType屬性,保存到瀏覽器內(nèi)部。插件初始化時,瀏覽器通過NP_Initialize接口將自己的接口傳遞給npapi插件,npapi插件通過NP_GetEntryPoints接口將自身接口傳遞給瀏覽器,從而達(dá)到雙方互調(diào)的目的。
npapi插件監(jiān)聽方式包括以下步驟:
S121.瀏覽器擴展通過在background html中引用npapi插件,啟動npapi插件中一個類的實例,當(dāng)目標(biāo)網(wǎng)站與瀏覽器擴展中的matches定義的相匹配時,注入執(zhí)行javascript腳本;
S122.在執(zhí)行javascript腳本過程中,使用addListener函數(shù)監(jiān)聽表單提交按鈕的點擊事件;
S123.在javascript腳本的點擊事件處理函數(shù)中,獲取引發(fā)鼠標(biāo)點擊事件的對應(yīng)元素信息;
S124.javascript腳本將元素信息傳給npapi插件,并準(zhǔn)備發(fā)往服務(wù)器。
在S2中,所述的加密處理為:
BHO插件或npapi插件將獲得的信息按照json格式進行格式化,對其中的敏感字段使用RAS公鑰加密,該公鑰為系統(tǒng)初始化時服務(wù)器端下發(fā)的。服務(wù)器端使用私鑰解密,保證數(shù)據(jù)不可被識別。對組建完畢的json報文,使用RSA私鑰進行簽名,服務(wù)器端使用RSA公鑰驗證簽名,保證數(shù)據(jù)的不可篡改性。
另外,在S3中,傳輸協(xié)議使用http協(xié)議。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。