一種網(wǎng)頁(yè)內容自動(dòng)采集方法涉及互聯(lián)網(wǎng)數據處理技術(shù)領(lǐng)域
優(yōu)采云 發(fā)布時(shí)間: 2021-06-26 01:06一種網(wǎng)頁(yè)內容自動(dòng)采集方法涉及互聯(lián)網(wǎng)數據處理技術(shù)領(lǐng)域
一種用于網(wǎng)頁(yè)內容的自動(dòng)采集 方法
[技術(shù)領(lǐng)域]
[0001] 本發(fā)明公開(kāi)了一種網(wǎng)頁(yè)內容自動(dòng)采集的方法,涉及互聯(lián)網(wǎng)數據處理技術(shù)領(lǐng)域。
[背景技術(shù)]
[0002] 隨著(zhù)科學(xué)技術(shù)的進(jìn)步,互聯(lián)網(wǎng)信息進(jìn)入了一個(gè)爆炸式的多元化時(shí)代?;ヂ?lián)網(wǎng)已經(jīng)成為一個(gè)巨大的信息庫?;ヂ?lián)網(wǎng)資訊采集可以讓你了解更多資訊采集、資源整合、資金等。在利用率和人力投入方面節省大量資源,廣泛應用于行業(yè)門(mén)戶(hù)網(wǎng)站信息采集、競爭對手情報數據采集、網(wǎng)站內容體系建設、垂直搜索、輿情監測、科學(xué)研究和其他領(lǐng)域。
[0003]以新聞網(wǎng)頁(yè)為例。常規新聞網(wǎng)頁(yè)內容采集程序在工作時(shí),依賴(lài)于為每個(gè)不同的新聞?wù)军c(diǎn)手動(dòng)提供頁(yè)面分析模板。格式定義文件定義了新聞網(wǎng)頁(yè)中的所有有效數據。項目的 xpath,例如新聞標題、正文、作者和發(fā)布時(shí)間。為新聞?wù)军c(diǎn)維護一個(gè)頁(yè)面分析模板很無(wú)聊,采集程序覆蓋的站點(diǎn)越多,工作量就越大。而且,如果新聞網(wǎng)站被改版,原來(lái)的頁(yè)面解析模板文件會(huì )“過(guò)期”,需要重新排序,但往往很難及時(shí)找到并重新排序。因此,一旦一個(gè)新聞網(wǎng)站被修改,就必須被發(fā)現,這些新聞網(wǎng)站的數據就會(huì )出現異常甚至丟失。
[0004] 現有新聞網(wǎng)站由于格式多樣??化、數據量爆炸式膨脹、監控嚴格等原因,采集難度較大,主要表現在:
[0005]1、需要手動(dòng)配置新聞頁(yè)面分析模板,制定相應信息的xpath。
[0006]2、網(wǎng)站信息量大,規則難以統一制定。一般每個(gè)站點(diǎn)都會(huì )單獨配置分析模板,工作量大;
[0007]3、帶來(lái)了大量的規則維護工作,以及網(wǎng)站改版后規則實(shí)時(shí)更新的問(wèn)題;
[0008]4、如果不能及時(shí)發(fā)現新聞?wù)军c(diǎn)改版,那么這些新聞?wù)军c(diǎn)采集的數據就會(huì )出現異常。
[0009] 現有的常規新聞網(wǎng)頁(yè)采集需要針對所有站點(diǎn)進(jìn)行定制和分析。所有的定制和后續的維護工作都是繁瑣乏味的,如果不能及時(shí)適應網(wǎng)站改版,就不會(huì )有效@對于k15@data,這些問(wèn)題對于大型采集系統來(lái)說(shuō)尤為突出,而新的急需技術(shù)手段替代人工維護。
[發(fā)明內容]
[0010] 本發(fā)明要解決的技術(shù)問(wèn)題是針對現有技術(shù)的缺陷,提供一種自動(dòng)采集網(wǎng)頁(yè)內容的方法,可以支持多種類(lèi)型的網(wǎng)頁(yè)通用采集器一種可擴展的方式,每個(gè)網(wǎng)頁(yè)通用采集器使用不同的算法來(lái)實(shí)現頁(yè)面通用采集,算法是從網(wǎng)頁(yè)的共性中抽象出來(lái)的。
[0011] 本發(fā)明采用以下技術(shù)方案來(lái)解決上述技術(shù)問(wèn)題:
[0012]一種自動(dòng)采集網(wǎng)頁(yè)內容的方法,具體步驟包括:
[0013]步驟一、根據網(wǎng)站網(wǎng)頁(yè)匹配的采集器集合的需要進(jìn)行內容采集網(wǎng)頁(yè)網(wǎng)址搜索;
[0014] 步驟二、當有匹配的采集器時(shí),執行采集器獲取網(wǎng)頁(yè)內容;當沒(méi)有匹配的采集器時(shí),找到不匹配的采集器集合,從不從匹配的采集器集合中選擇采集器并執行采集器獲取網(wǎng)頁(yè)內容;
[0015]三、采集步驟成功后,輸出網(wǎng)頁(yè)內容的采集結果;當采集不成功時(shí),返回步驟2,再次選擇采集器。
[0016] 作為本發(fā)明進(jìn)一步優(yōu)選的方案,在第二步中,采集器的識別過(guò)程包括:
[0017]1、訪(fǎng)問(wèn)目標網(wǎng)頁(yè),獲取頁(yè)面字節流;
[0018]2、將字節流解析成dom對象,將dom中的所有Elements對應到html標簽,并記錄html標簽的所有屬性和值;
[0019]3、通過(guò)dom對象中的title節點(diǎn)來(lái)確認title的范圍,這里title節點(diǎn)的Xpath為://HTML/HEAD/TITLE;
[0020] 通過(guò)搜索h節點(diǎn)比較title節點(diǎn),查看網(wǎng)頁(yè)的titlexpath,其中h節點(diǎn)的Xpath為://B0DY///*[name O ='H*'];
[0021] 當title節點(diǎn)的值收錄h節點(diǎn)的值時(shí),h節點(diǎn)為網(wǎng)頁(yè)的標題節點(diǎn),h節點(diǎn)的xpath為網(wǎng)頁(yè)標題的xpath;
[0022]4、以h節點(diǎn)為起點(diǎn)尋找發(fā)布時(shí)間節點(diǎn);
[0023]5、以h節點(diǎn)為起點(diǎn),掃描h節點(diǎn)的祖父節點(diǎn)對應的所有子節點(diǎn),找到文本值最長(cháng)的節點(diǎn),確定為網(wǎng)頁(yè)正文節點(diǎn);
[0024]6、 確認作者節點(diǎn),使用“作者節點(diǎn)特征匹配”方法,使用“作者節點(diǎn)特征匹配”方法掃描h節點(diǎn)的父節點(diǎn)的所有子節點(diǎn),并檢查是否匹配子節點(diǎn)的文本值符合作者節點(diǎn)的特征。如果匹配,確認子節點(diǎn)為作者節點(diǎn);
[0025]7、根據頁(yè)面標題、發(fā)布時(shí)間節點(diǎn)、正文節點(diǎn)和作者節點(diǎn),識別出與頁(yè)面內容匹配的米機設備。
[0026] 作為本發(fā)明進(jìn)一步優(yōu)選的方案,當在步驟6中使用“作者節點(diǎn)特征匹配”方法沒(méi)有成功確認作者節點(diǎn)時(shí),通過(guò)“位置猜測”方法確認作者節點(diǎn):
[0027] 從發(fā)布節點(diǎn)開(kāi)始,分析發(fā)布節點(diǎn)在其兄弟節點(diǎn)中的位置,確定作者節點(diǎn):
[0028]a.如果發(fā)布節點(diǎn)有多個(gè)兄弟節點(diǎn),且發(fā)布節點(diǎn)排在多個(gè)節點(diǎn)的前一半,則確定發(fā)布節點(diǎn)的下一個(gè)兄弟節點(diǎn)為作者節點(diǎn);
[0029] b.如果發(fā)布節點(diǎn)有多個(gè)兄弟節點(diǎn),并且發(fā)布節點(diǎn)排在多個(gè)節點(diǎn)的一半之后,則確定發(fā)布節點(diǎn)的前一個(gè)兄弟節點(diǎn)為作者節點(diǎn)。
[0030] 作為本發(fā)明進(jìn)一步優(yōu)選的方案,步驟4中確定發(fā)布時(shí)間節點(diǎn)的具體方法為:
[0031] 從h節點(diǎn)的所有子節點(diǎn)中搜索時(shí)間節點(diǎn),如果找到,則完成發(fā)布時(shí)間節點(diǎn)的確認;
[0032]否則,繼續從節點(diǎn)h的所有兄弟節點(diǎn)及其所有子節點(diǎn)中尋找時(shí)間節點(diǎn)。如果找到,則完成發(fā)布時(shí)間節點(diǎn)的確認。
[0033] 作為本發(fā)明進(jìn)一步優(yōu)選的方案,步驟4中發(fā)布時(shí)間節點(diǎn)的確認算法具體為:
[0034] 使用常見(jiàn)時(shí)間格式的正則表達式來(lái)匹配節點(diǎn)的值。如果匹配成功,則確認該節點(diǎn)為發(fā)布時(shí)間節點(diǎn)。
[0035]作為本發(fā)明進(jìn)一步優(yōu)選的方案,步驟5中確定網(wǎng)頁(yè)文本節點(diǎn)的過(guò)程還包括按照噪聲節點(diǎn)標準對所有節點(diǎn)進(jìn)行去噪處理,剔除不合理的節點(diǎn)。具體節點(diǎn)標準為:
[0036](I)其中節點(diǎn)的值收錄JavaScript特征節點(diǎn);
[0037](2)凡節點(diǎn)的值收錄小于設定閾值的標點(diǎn)符號個(gè)數。
[0038] 作為本發(fā)明進(jìn)一步優(yōu)選的方案,步驟6中判斷作者節點(diǎn)的方法包括: