一種網(wǎng)頁內(nèi)容自動(dòng)采集方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明公開了一種網(wǎng)頁內(nèi)容自動(dòng)采集方法,涉及互聯(lián)網(wǎng)數(shù)據(jù)處理技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]隨著科技的進(jìn)步,互聯(lián)網(wǎng)信息進(jìn)入一個(gè)爆炸式、多元式的時(shí)代,互聯(lián)網(wǎng)成為一個(gè)巨大的信息庫,互聯(lián)網(wǎng)信息采集可以使您在信息采集、資源整合、資金利用、人力投入等方面節(jié)約大量資源,廣泛應(yīng)用于行業(yè)門戶網(wǎng)站信息采集、競爭對(duì)手情報(bào)數(shù)據(jù)搜集、網(wǎng)站內(nèi)容系統(tǒng)建設(shè)、垂直搜索、輿情監(jiān)測、科研等領(lǐng)域。
[0003]以新聞網(wǎng)頁為例,常規(guī)的新聞網(wǎng)頁內(nèi)容采集程序工作時(shí),依賴于人工提供每個(gè)不同新聞?wù)军c(diǎn)的頁面解析模板,格式定義文件中定義了新聞網(wǎng)頁中所有有效數(shù)據(jù)項(xiàng)的xpath,如新聞標(biāo)題、正文、作者、發(fā)表時(shí)間。維護(hù)新聞?wù)军c(diǎn)頁面解析模板是非??菰锏?,而且如果采集程序覆蓋的站點(diǎn)越多,工作量越大。而且若新聞?wù)军c(diǎn)改版后,原有的頁面解析模板文件也就隨之‘過期’,需要重新訂制,但是往往很難及時(shí)發(fā)現(xiàn)并重新訂制,導(dǎo)致一旦某個(gè)新聞?wù)军c(diǎn)改版,那么在發(fā)現(xiàn)之前,這些新聞?wù)军c(diǎn)的數(shù)據(jù)都將異常甚至丟失。
[0004]現(xiàn)有的新聞?wù)军c(diǎn)因?yàn)楦袷蕉鄻踊瑪?shù)據(jù)量爆炸式膨脹,監(jiān)控嚴(yán)格等,導(dǎo)致收集難度加大,主要表現(xiàn)在:
[0005]1、需要人工配置新聞網(wǎng)頁解析模板,制定對(duì)應(yīng)信息的xpath。
[0006]2、網(wǎng)站的海量信息抓取,規(guī)則難以統(tǒng)一制定。一般會(huì)針對(duì)每個(gè)站點(diǎn)單獨(dú)配置解析模板,工作量大;
[0007]3、后繼帶來了海量的規(guī)則維護(hù)工作,以及站點(diǎn)改版后規(guī)則要實(shí)時(shí)更新的問題;
[0008]4、若不能夠及時(shí)發(fā)現(xiàn)新聞?wù)军c(diǎn)改版,那么采集這些新聞?wù)军c(diǎn)的數(shù)據(jù)將會(huì)出現(xiàn)異常。
[0009]現(xiàn)有常規(guī)新聞網(wǎng)頁采集都需要通過針對(duì)所有站點(diǎn)訂制解析模板,所有的訂制和后繼維護(hù)工作繁瑣而枯燥,且若不能及時(shí)適應(yīng)站點(diǎn)的改版,導(dǎo)致無法有效采集數(shù)據(jù),對(duì)于大型的采集系統(tǒng)這些問題尤為突出,急需通過新的技術(shù)方法來取代人工的維護(hù)工作。
【發(fā)明內(nèi)容】
[0010]本發(fā)明所要解決的技術(shù)問題是:針對(duì)現(xiàn)有技術(shù)的缺陷,提供一種網(wǎng)頁內(nèi)容自動(dòng)采集方法,通過可擴(kuò)展的方式,支持多種類型的網(wǎng)頁通用采集器,每個(gè)網(wǎng)頁通用采集器都是以不同的算法實(shí)現(xiàn)頁面通用采集,而算法則是通過網(wǎng)頁的共同特征抽象而來。
[0011]本發(fā)明為解決上述技術(shù)問題采用以下技術(shù)方案:
[0012]一種網(wǎng)頁內(nèi)容自動(dòng)采集方法,具體步驟包括:
[0013]步驟一、根據(jù)需要進(jìn)行內(nèi)容采集的網(wǎng)頁URL查找與該網(wǎng)頁所在網(wǎng)站相匹配的采集器集合;
[0014]步驟二、當(dāng)存在相匹配的采集器時(shí),執(zhí)行采集器,獲取網(wǎng)頁內(nèi)容;當(dāng)不存在相匹配的采集器時(shí),查找未匹配采集器集合,從未匹配采集器集合中選擇采集器并執(zhí)行采集器,獲取網(wǎng)頁內(nèi)容;
[0015]步驟三、采集成功后,輸出網(wǎng)頁內(nèi)容的采集結(jié)果;當(dāng)采集不成功時(shí),返回步驟二,重新選擇采集器。
[0016]作為本發(fā)明的進(jìn)一步優(yōu)選方案,所述步驟二中,采集器的識(shí)別流程包括:
[0017]1、訪問目標(biāo)網(wǎng)頁頁面,并獲取頁面字節(jié)流;
[0018]2、將字節(jié)流解析成dom對(duì)象,將dom中所有Element對(duì)應(yīng)html標(biāo)簽,記錄html標(biāo)簽的所有屬性和值;
[0019]3、通過dom對(duì)象中的title節(jié)點(diǎn),確認(rèn)標(biāo)題范圍,其中,所述title節(jié)點(diǎn)的Xpath為://HTML/HEAD/TITLE ;
[0020]再通過查找h節(jié)點(diǎn),比對(duì)title節(jié)點(diǎn),確認(rèn)網(wǎng)頁的標(biāo)題xpath,其中,所述h節(jié)點(diǎn)的Xpath 為://B0DY//*[name O = ’H*’];
[0021]當(dāng)title節(jié)點(diǎn)的值包含h節(jié)點(diǎn)的值時(shí),h節(jié)點(diǎn)即為網(wǎng)頁的標(biāo)題節(jié)點(diǎn),h節(jié)點(diǎn)的xpath即為網(wǎng)頁標(biāo)題的xpath ;
[0022]4、以h節(jié)點(diǎn)為起點(diǎn),查找發(fā)表時(shí)間節(jié)點(diǎn);
[0023]5、以h節(jié)點(diǎn)為起點(diǎn),掃描h節(jié)點(diǎn)的祖父節(jié)點(diǎn)對(duì)應(yīng)的所有子節(jié)點(diǎn),查找文本值長度最長的節(jié)點(diǎn),將其確定為網(wǎng)頁正文節(jié)點(diǎn);
[0024]6、確認(rèn)作者節(jié)點(diǎn),用“作者節(jié)點(diǎn)特征匹配”方式以h節(jié)點(diǎn)為起點(diǎn),掃描h節(jié)點(diǎn)的父節(jié)點(diǎn)的所有子節(jié)點(diǎn),匹配子節(jié)點(diǎn)的文本值是否符合作者節(jié)點(diǎn)特征,若符合,則確認(rèn)該子節(jié)點(diǎn)為作者節(jié)點(diǎn);
[0025]7、根據(jù)網(wǎng)頁的標(biāo)題、發(fā)表時(shí)間節(jié)點(diǎn)、正文節(jié)點(diǎn)和作者節(jié)點(diǎn),識(shí)別出網(wǎng)頁內(nèi)容相匹配的米集器。
[0026]作為本發(fā)明的進(jìn)一步優(yōu)選方案,當(dāng)步驟6中使用“作者節(jié)點(diǎn)特征匹配”方式?jīng)]有成功確認(rèn)作者節(jié)點(diǎn)時(shí),則使用“位置猜測”方式確認(rèn)作者節(jié)點(diǎn):
[0027]以發(fā)表節(jié)點(diǎn)為起點(diǎn),分析發(fā)表節(jié)點(diǎn)在其兄弟節(jié)點(diǎn)中的位置,來確定作者節(jié)點(diǎn):
[0028]a、若發(fā)表節(jié)點(diǎn)的兄弟節(jié)點(diǎn)有多個(gè),且發(fā)表節(jié)點(diǎn)在所述多個(gè)節(jié)點(diǎn)中排名在一半之前,則確定發(fā)表節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn)就是作者節(jié)點(diǎn);
[0029]b、若發(fā)表節(jié)點(diǎn)的兄弟節(jié)點(diǎn)有多個(gè),且發(fā)表節(jié)點(diǎn)在所述多個(gè)節(jié)點(diǎn)中排名在一半之后,則確定發(fā)表節(jié)點(diǎn)的前一個(gè)兄弟節(jié)點(diǎn)就是作者節(jié)點(diǎn)。
[0030]作為本發(fā)明的進(jìn)一步優(yōu)選方案,所述步驟4中發(fā)表時(shí)間節(jié)點(diǎn)的確認(rèn)具體方法為:
[0031]從h節(jié)點(diǎn)的所有子節(jié)點(diǎn)中查找時(shí)間節(jié)點(diǎn),若查找到,則完成發(fā)表時(shí)間節(jié)點(diǎn)的確認(rèn);
[0032]否則,繼續(xù)從h節(jié)點(diǎn)的所有兄弟節(jié)點(diǎn)及其所有子節(jié)點(diǎn)中查找時(shí)間節(jié)點(diǎn),若查找到,則完成發(fā)表時(shí)間節(jié)點(diǎn)的確認(rèn)。
[0033]作為本發(fā)明的進(jìn)一步優(yōu)選方案,所述步驟4中發(fā)表時(shí)間節(jié)點(diǎn)的確認(rèn)算法具體為:
[0034]通過常用時(shí)間格式正則表達(dá)式來匹配節(jié)點(diǎn)的值,若能夠匹配命中,則該節(jié)點(diǎn)即確認(rèn)為發(fā)表時(shí)間節(jié)點(diǎn)。
[0035]作為本發(fā)明的進(jìn)一步優(yōu)選方案,所述步驟5確定網(wǎng)頁正文節(jié)點(diǎn)的過程中,還包括對(duì)所有節(jié)點(diǎn)按照噪音節(jié)點(diǎn)標(biāo)準(zhǔn)進(jìn)行去噪處理,將不合理的節(jié)點(diǎn)排除,所述噪音節(jié)點(diǎn)標(biāo)準(zhǔn)具體為:
[0036](I)凡節(jié)點(diǎn)的值中含有javaScript特征的節(jié)點(diǎn);
[0037](2)凡節(jié)點(diǎn)的值中含有的標(biāo)點(diǎn)符號(hào)數(shù)量小于設(shè)定閾值的節(jié)點(diǎn)。
[0038]作為本發(fā)明的進(jìn)一步優(yōu)選方案,所述步驟6中作者節(jié)點(diǎn)的判斷方法包括:
[0039]I)節(jié)點(diǎn)的值中含有設(shè)定的特征字符串,包括“作者:”、“來源:”或者“責(zé)任編輯:,,;
[0040]2)節(jié)點(diǎn)的值長度小于閾值。
[0041]本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:
[0042]1、本發(fā)明中的網(wǎng)頁自動(dòng)采集系統(tǒng)框架,支持?jǐn)U展其它多個(gè)網(wǎng)頁采集器,極大的提高了系統(tǒng)的可維護(hù)性,降低了維護(hù)成本與風(fēng)險(xiǎn),優(yōu)化了采集系統(tǒng)結(jié)構(gòu),簡化采集處理流程,為大規(guī)模采集系統(tǒng)提供了新的高效解決方案。
[0043]2、本發(fā)明中的網(wǎng)頁通用采集器算法,通過自動(dòng)解析html結(jié)構(gòu)能夠處理絕大部分的站點(diǎn),有效的提高了采集效率,并且可作為獨(dú)立組件運(yùn)行于多種系統(tǒng),例如新聞網(wǎng)頁網(wǎng)站中。
【附圖說明】
[0044]圖1是本發(fā)明中網(wǎng)頁內(nèi)容自動(dòng)采集的方法流程圖。
[0045]圖2是本發(fā)明中網(wǎng)頁通用采集器處理流程圖。
【具體實(shí)施方式】
[0046]下面詳細(xì)描述本發(fā)明的實(shí)施方式,所述實(shí)施方式的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施方式是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。
[0047]下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)說明:
[0048]本發(fā)明中網(wǎng)頁內(nèi)容自動(dòng)采集的方法流程圖如圖1所示,在具體實(shí)施例中,以新聞網(wǎng)站的內(nèi)容采集為例。所述網(wǎng)頁內(nèi)容自動(dòng)采集方法,具體步驟包括:
[0049]步驟一、根據(jù)需要進(jìn)行內(nèi)容采集的網(wǎng)頁URL查找與該網(wǎng)頁所在網(wǎng)站相匹配的采集器集合;
[0050]步驟二、當(dāng)存在相匹配的采集器時(shí),執(zhí)行采集器,獲取網(wǎng)頁內(nèi)容;當(dāng)不存在相匹配的采集器時(shí),查找未匹配采集器集合,從未匹配采集器集合中選擇采集器并執(zhí)行采集器,獲取網(wǎng)頁內(nèi)容;
[0051]步驟三、采集成功后,輸出網(wǎng)頁內(nèi)容的采集結(jié)果;當(dāng)采集不成功時(shí),返回步驟二,重新選擇采集器。
[0052]本發(fā)明中網(wǎng)頁通用采集器處理流程圖如圖2所示,
[0053]1、互聯(lián)網(wǎng)訪問目標(biāo)新聞網(wǎng)頁頁面,并獲取頁面字節(jié)流。
[0054]2、將字節(jié)流解析成dom對(duì)象,dom中所有Element中對(duì)應(yīng)html標(biāo)簽,且擁有html標(biāo)簽的所有屬性和值。dom是一種用XML的獨(dú)特java工具包,包含java語言的語法乃至語義,實(shí)現(xiàn)XML文件解析。html是超文本標(biāo)記語言,構(gòu)成網(wǎng)頁文檔的主要語言,可以包含文字、圖形、動(dòng)畫、