本發(fā)明涉及數(shù)據(jù)處理
技術(shù)領(lǐng)域:
:,具體涉及一種用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法及裝置。
背景技術(shù):
::隨著互聯(lián)網(wǎng)的普及和發(fā)展,電子商務(wù)網(wǎng)站,門戶網(wǎng)站,博客,微博等各種類型的信息都發(fā)布在互聯(lián)網(wǎng)上,人們可以通過互聯(lián)網(wǎng)搜集海量資訊并進行分析、統(tǒng)計,以獲取需要的信息。現(xiàn)有的方法是采用網(wǎng)絡(luò)爬蟲技術(shù)獲取信息,除去圖片、視頻等二進制內(nèi)容,網(wǎng)絡(luò)爬蟲一般獲取的是網(wǎng)頁文本內(nèi)容,傳統(tǒng)爬蟲使用正則表達式、xpath或者位置進行信息的解析。但存在的問題是,網(wǎng)頁是動態(tài)變化的,比如:業(yè)務(wù)字段名/字段值的位置、html的標簽id、xpath路徑可能隨時會發(fā)生變化。網(wǎng)頁的動態(tài)特性決定了網(wǎng)絡(luò)爬蟲頻繁維護的特性,因此,現(xiàn)有的網(wǎng)絡(luò)爬蟲普適性差、維護成本很高。技術(shù)實現(xiàn)要素:針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供的用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法及裝置,可以自動識別網(wǎng)頁頁面的非結(jié)構(gòu)性變化,并采用自適應(yīng)的數(shù)據(jù)抽取邏輯,無須頻繁維護。第一方面,本發(fā)明提供的一種用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法,包括:步驟S1,根據(jù)事先指定的特征,判斷當前頁面是否發(fā)生了局部結(jié)構(gòu)性變動;步驟S2,若未發(fā)生結(jié)構(gòu)性變動,則獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析所述當前頁面中的內(nèi)容;步驟S3,根據(jù)預(yù)先配置的映射規(guī)則,對通過解析獲取的業(yè)務(wù)字段名做自適應(yīng)映射,并存儲到存儲區(qū)。本發(fā)明提供的用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法,可以自動識別網(wǎng)頁頁面的非結(jié)構(gòu)性變化,并采用自適應(yīng)的數(shù)據(jù)抽取邏輯,無須頻繁維護,節(jié)約了成本,同時提高了網(wǎng)頁數(shù)據(jù)爬取的穩(wěn)定性,具備更好的普適性。優(yōu)選地,所述步驟S1包括:逐一比對事先指定的特征和當前頁面的對應(yīng)標簽,若不一致,則認為所述當前頁面發(fā)生了局部結(jié)構(gòu)性變動。優(yōu)選地,所述步驟S2包括:獲取所述當前頁面的HTML文件;從所述HTML文件抽取出Table標簽中的內(nèi)容和div標簽中的內(nèi)容;根據(jù)所述Table標簽中的內(nèi)容獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析內(nèi)容;根據(jù)所述div標簽中的內(nèi)容獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析內(nèi)容。優(yōu)選地,所述根據(jù)所述Table標簽中的內(nèi)容獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析內(nèi)容,包括:檢測所述Table標簽中的標題部分;抽取所述Table標簽中除標題部分的多維度信息;根據(jù)抽取的所述多維度信息判斷結(jié)構(gòu)布局;根據(jù)所述結(jié)構(gòu)布局獲取業(yè)務(wù)數(shù)據(jù)。優(yōu)選地,所述根據(jù)所述div標簽中的內(nèi)容獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析內(nèi)容,包括:從所述div標簽中獲取與已知業(yè)務(wù)字段名匹配的label,并根據(jù)匹配到的label在div標簽中的位置判斷結(jié)構(gòu)布局,根據(jù)結(jié)構(gòu)布局獲取業(yè)務(wù)數(shù)據(jù)。第二方面,本發(fā)明提供的一種用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理裝置,包括:結(jié)構(gòu)性變動檢測模塊,用于根據(jù)事先指定的特征,判斷當前頁面是否發(fā)生了局部結(jié)構(gòu)性變動;解析模塊,用于若未發(fā)生結(jié)構(gòu)性變動,則獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析所述當前頁面中的內(nèi)容;字段自適應(yīng)調(diào)整模塊,根據(jù)預(yù)先配置的映射規(guī)則,對通過解析獲取的業(yè)務(wù)字段名做自適應(yīng)映射,并存儲到存儲區(qū)。本發(fā)明提供的用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理裝置,可以自動識別網(wǎng)頁頁面的非結(jié)構(gòu)性變化,并采用自適應(yīng)的數(shù)據(jù)抽取邏輯,無須頻繁維護,節(jié)約了成本,同時提高了網(wǎng)頁數(shù)據(jù)爬取的穩(wěn)定性,具備更好的普適性。優(yōu)選地,所述結(jié)構(gòu)性變動檢測模塊具體用于:逐一比對事先指定的特征和當前頁面的對應(yīng)標簽,若不一致,則認為所述當前頁面發(fā)生了局部結(jié)構(gòu)性變動。優(yōu)選地,所述解析模塊具體用于:獲取所述當前頁面的HTML文件;從所述HTML文件抽取出Table標簽中的內(nèi)容和div標簽中的內(nèi)容;根據(jù)所述Table標簽中的內(nèi)容獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析內(nèi)容;根據(jù)所述div標簽中的內(nèi)容獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析內(nèi)容。優(yōu)選地,所述解析模塊中,根據(jù)所述Table標簽中的內(nèi)容獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析內(nèi)容,包括:檢測所述Table標簽中的標題部分;抽取所述Table標簽中除標題部分的多維度信息;根據(jù)抽取的所述多維度信息判斷結(jié)構(gòu)布局;根據(jù)所述結(jié)構(gòu)布局獲取業(yè)務(wù)數(shù)據(jù)。優(yōu)選地,所述解析模塊中,根據(jù)所述div標簽中的內(nèi)容獲取所述當前頁面的結(jié)構(gòu)布局,根據(jù)所述當前頁面的結(jié)構(gòu)布局解析內(nèi)容,包括:從所述div標簽中獲取與已知業(yè)務(wù)字段名匹配的label,并根據(jù)匹配到的label在div標簽中的位置判斷結(jié)構(gòu)布局,根據(jù)結(jié)構(gòu)布局獲取業(yè)務(wù)數(shù)據(jù)。附圖說明圖1為本發(fā)明實施例所提供的用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法的流程圖;圖2為一個示例性表格中的標題部分、備注部分以及業(yè)務(wù)數(shù)據(jù)部分的布局;圖3為縱向多TL布局的示例;圖4為橫向多TL布局的示例;圖5為對多TL布局的表格進行切割合并的一個示例;圖6為對多TL布局的表格進行切割合并的一個示例;圖7為對單TL(多級)布局的表格進行處理的一個示例;圖8為本發(fā)明實施例所提供的用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。具體實施方式下面將結(jié)合附圖對本發(fā)明技術(shù)方案的實施例進行詳細的描述。以下實施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,因此只是作為示例,而不能以此來限制本發(fā)明的保護范圍。需要注意的是,除非另有說明,本申請使用的技術(shù)術(shù)語或者科學術(shù)語應(yīng)當為本發(fā)明所屬領(lǐng)域技術(shù)人員所理解的通常意義。網(wǎng)頁中的表格由HTML中的<table>標簽來定義。表格的行由<tr>標簽定義,<tr>必須在一個<table></table>里面,不能單獨使用。每行被分割為若干單元格,每個單元格由<td>標簽定義,<td>需要嵌套在<tr></tr>中間。<th>和<td>一樣也是需要嵌套在<tr>當中的,<th>...</th>用來定義表頭單元格,包含的是表頭信息。具體用法如下:上述代碼在網(wǎng)頁中顯示的表格如下所示:姓名年齡張三40HTML中的div標簽用來定義文檔中的分區(qū)或節(jié)(division/section)。<div>標簽可以把文檔分割為獨立的、不同的部分。它可以用作嚴格的組織工具,并且不使用任何格式與其關(guān)聯(lián)。本實施例提供了一種用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法,如圖1所示,包括:步驟S1,根據(jù)事先指定的特征,判斷當前頁面是否發(fā)生了局部結(jié)構(gòu)性變動。其中,事先指定的特征是指網(wǎng)頁的結(jié)構(gòu)布局,在HTML中表現(xiàn)為標簽的類型、位置、屬性等。結(jié)構(gòu)性變動是指頁面的結(jié)構(gòu)布局發(fā)生了變化,比如:某個標簽不見了,某個標簽的屬性發(fā)生了變化,或者Table行數(shù)、列數(shù)變了等。步驟S2,若未發(fā)生結(jié)構(gòu)性變動,則獲取當前頁面的結(jié)構(gòu)布局,根據(jù)當前頁面的結(jié)構(gòu)布局解析當前頁面中的內(nèi)容。步驟S3,根據(jù)預(yù)先配置的映射規(guī)則,對通過解析獲取的業(yè)務(wù)字段名做自適應(yīng)映射,并存儲到存儲區(qū)。其中,業(yè)務(wù)字段名是指每項業(yè)務(wù)數(shù)據(jù)的標題名,如圖2中的“執(zhí)行法院”、“執(zhí)行案號”等。自適應(yīng)映射是指將解析獲取的業(yè)務(wù)字段名替換為預(yù)定的標準字段,以統(tǒng)一抽取數(shù)據(jù)的業(yè)務(wù)字段名,方便后續(xù)數(shù)據(jù)的管理和統(tǒng)計。例如將“企業(yè)名稱”、“機構(gòu)名稱”自動映射為存儲層的“公司名稱”。本實施例提供的用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法,可以自動識別網(wǎng)頁頁面的非結(jié)構(gòu)性變化,并采用自適應(yīng)的數(shù)據(jù)抽取邏輯,無須頻繁維護,節(jié)約了成本,同時提高了網(wǎng)頁數(shù)據(jù)爬取的穩(wěn)定性,具備更好的普適性。其中,步驟S1具體包括:逐一比對事先指定的特征和當前頁面的對應(yīng)標簽,若不一致,則認為當前頁面發(fā)生了局部結(jié)構(gòu)性變動。HTML中可能包含有多種類型的標簽,如Table標簽、div標簽。不同標簽的提取方法不同,為了能夠適應(yīng)混合型的HTML,步驟S2具體包括:步驟S21,獲取當前頁面的HTML文件。步驟S22,從HTML文件抽取出Table標簽中的內(nèi)容和div標簽中的內(nèi)容。步驟S23,根據(jù)Table標簽中的內(nèi)容獲取當前頁面的結(jié)構(gòu)布局,根據(jù)當前頁面的結(jié)構(gòu)布局解析內(nèi)容。步驟S24,根據(jù)div標簽中的內(nèi)容獲取當前頁面的結(jié)構(gòu)布局,根據(jù)當前頁面的結(jié)構(gòu)布局解析內(nèi)容。網(wǎng)頁上的表格采用HTMLTable標簽的方式進行編輯,這些信息大多是半結(jié)構(gòu)化數(shù)據(jù)雖然在頁面上的顯示效果較為規(guī)整,但是底層標簽及數(shù)據(jù)并不規(guī)整,甚至非常混亂,導(dǎo)致標題部分和與業(yè)務(wù)數(shù)據(jù)混雜在一起,無法快速準確地抽取業(yè)務(wù)數(shù)據(jù)。為了自動、快速、準確地提取網(wǎng)頁表格中的數(shù)據(jù),步驟S23具體包括:步驟S231,檢測Table標簽中的標題部分。如圖2所示,表格標題部分通常都是一個大的合并單元格,可能是一行或多行,表格還可以包含備注部分,備注部分的結(jié)構(gòu)與標題部分類似,除去表格的標題部分和備注部分,其余部分就是需要提取的業(yè)務(wù)數(shù)據(jù)。當表格中存在備注部分時,步驟S1中還需要檢測備注部分,檢測方式與標題部分的檢測方式相同。步驟S232,抽取Table標簽中除標題部分的多維度信息。其中,多維度信息包括:直接內(nèi)容、th/td分布、class屬性分布、background-color屬性分布等。直接內(nèi)容為網(wǎng)頁中表格中直接顯示的內(nèi)容,即<table>標簽中的文本內(nèi)容,如“姓名”、“年齡”、“張三”、“40”。th/td分布指th和td標簽在這個table中的分布位置。class屬性規(guī)定單元格中元素的類名,class屬性分布是指class屬性在這個table中的分布位置。background-color屬性規(guī)定了單元格的背景顏色,background-color屬性分布是指background-color屬性在這個table中的分布位置。步驟S233,根據(jù)抽取的多維度信息判斷結(jié)構(gòu)布局。其中,常見的表格布局分為橫向單TL、橫向多TL、縱向單TL、縱向多TL、多表組合。TL(TitleLine)為列頭(或數(shù)據(jù)標題部分)(可能物理上是多行,但邏輯上是一個區(qū)域),表示各項業(yè)務(wù)數(shù)據(jù)的標題,如圖2中的業(yè)務(wù)數(shù)據(jù)部分的第一行及為TL。TL可以是橫向的,也可以是縱向的,如圖3所示為縱向多TL布局,圖4為橫向多TL布局。步驟S234,根據(jù)結(jié)構(gòu)布局獲取業(yè)務(wù)數(shù)據(jù)。步驟S23提供了自適應(yīng)抽取HTMLTable標簽中結(jié)構(gòu)化信息的方法,首先檢測Table標簽中的標題部分,排除了不屬于業(yè)務(wù)數(shù)據(jù)部分的內(nèi)容,防止無用數(shù)據(jù)的混入;然后抽取Table標簽中除標題部分的多維度信息,根據(jù)多維度信息綜合判斷表格的結(jié)構(gòu)布局,由于Table標簽中的信息能夠反映表格布局,因此,無論網(wǎng)頁中的表格發(fā)生了怎樣的改變,通過對Table標簽中的信息進行分析,均可以得到新的表格布局。因此,步驟S23提供的方法,無需提前獲知表格的布局,針對不同結(jié)構(gòu)的HTMLTable無需在重新編寫程序,解決了現(xiàn)有的Table抽取算法缺乏普適性的問題,同時提高了抽取數(shù)據(jù)的可靠性,尤其對大規(guī)模半結(jié)構(gòu)化數(shù)據(jù)識別和抽取時更為有效。標題部分和備注部分一般都在表格的第一行或第二行,且是一個合并單元格,因此,步驟S231的具體實現(xiàn)方式包括:在Table標簽中檢測每一行是否為一個合并單元格,若是,則被檢測的行屬于標題部分,并進行下一行的檢測;若不是,表示該行開始是業(yè)務(wù)數(shù)據(jù),則停止標題部分的檢測。例如,標題部分和備注部分的代碼一般為以下形式:<tr><tdcolspan=’5’>2016年人口信息統(tǒng)計表</td></tr>上述代碼只包含一個<td>標簽,而且colspan=’5’表明這是一個合并單元格,通過檢測<td>和colspan就能與業(yè)識別標題部分和備注部分?,F(xiàn)有技術(shù),在濾除無用數(shù)據(jù)(如標題部分、備注部分)時,需要預(yù)先知道無用數(shù)據(jù)的位置,然后在程序中指定好位置以便跳過前幾行無用數(shù)據(jù)。而本實施例的方法更具有通用性,無論表格有多少行標題部分和備注部分,都可以準確高效地對其進行檢測,以保證能夠準確地抽取到業(yè)務(wù)數(shù)據(jù)。在抽取數(shù)據(jù)過程中,除直接獲取常規(guī)單元格對應(yīng)信息外,還需要對合并單元格做特別處理,使抽取的數(shù)據(jù)滿足存儲格式,方便后續(xù)處理,因此,步驟S232的優(yōu)選方式包括:抽取Table標簽中除標題部分(有備注部分的話,還包括備注部分)的多維度信息,對被抽取信息中的合并單元格進行拆分后,再將每個維度的信息分別以二維數(shù)組形式存儲,并對拆分的單元格做特殊標記。其中,合并單元格又分為橫向合并(colspan)、縱向合并(rowspan)、混合合并(colspan+rowspan)。例如:對<tdcolspan=’5’bgcolor="#F7FBFE">ABC</td>抽取直接內(nèi)容后:ABC{←}{←}{←}{←}其中,特殊標記“{←}”是提取直接內(nèi)容特有的,表示該單元格中的內(nèi)容與其左邊單元格中的內(nèi)容相同,目的是為了給TL的處理和最終內(nèi)容輸出提供靈活性,而其它數(shù)據(jù)的抽取不需要做特殊標記。抽取‘background-color屬性分布’為:#F7FBFE#F7FBFE#F7FBFE#F7FBFE#F7FBFE對于單行存在多個橫向合并(colspan)的情況,還需要注意坐標平移的問題。例如<tdcolspan=’2’>ABC</td><tdcolspan=’3’>DEF</td>ABC{←}DEF{←}{←}對于縱向合并(rowspan)、混合合并(colspan+rowspan)也采用類似的方法進行數(shù)據(jù)抽取。只有獲知表格布局,才能準確地提取到業(yè)務(wù)數(shù)據(jù),并根據(jù)表格布局將表格轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)。步驟S233中的判斷表格布局包括以下幾種操作:(1)根據(jù)抽取的直接內(nèi)容,排除不是TL的行和列。根據(jù)TL中直接內(nèi)容的數(shù)據(jù)類型、長度、關(guān)鍵詞進行排除性判斷。其判斷依據(jù)包括:TL每個單元格中的字段名長度不可能超過閾值(比如說50),TL的字段名個數(shù)不可能超過閾值(比如1000個),字段名不可能是純數(shù)字字符串,常見的字段名包括“名稱”、“Name”、“地址”、“Address”、“地址”、“類型”、“備注”等關(guān)鍵詞,根據(jù)常見的表格統(tǒng)計得到關(guān)鍵詞庫,檢測行或列中是否包含關(guān)鍵詞庫中的關(guān)鍵詞。因此,基于直接內(nèi)容進行表格布局判斷的具體實現(xiàn)步驟為:逐行、逐列檢測抽取的直接內(nèi)容;若直接內(nèi)容的數(shù)據(jù)類型是數(shù)字型字符串,則直接內(nèi)容所在行或列就不是TL;若直接內(nèi)容的字段長度超過第一閾值,則直接內(nèi)容所在行或列就不是TL;若一行或一列的多項直接內(nèi)容中包含給定的關(guān)鍵詞,則行或列是TL。其中,在使用基于關(guān)鍵詞的判斷方法時,為了保證判斷可靠性,至少需要出現(xiàn)兩個關(guān)鍵詞才可以認定該行或列為TL。(2)根據(jù)抽取的background-color屬性分布,判斷表格布局。表格顯示時,為了給用戶提供閱讀的便利性,表格TL的背景色和數(shù)據(jù)的背景色會不同,或者數(shù)據(jù)的奇偶行會采用交錯的背景色,因此,background-color屬性分布可以用來判斷哪些行或列可能是TL,進而判斷表格布局是橫向還是縱向的。(3)根據(jù)抽取的class屬性分布,判斷表格布局。有相同class屬性的單元格一般是同類的單元格。若所有行單元格的class屬性均相同,則表格布局為橫向布局;若所有行單元格的class屬性均相同,則表格布局為縱向布局,因此,通過class屬性分布可以判斷是橫向還是縱向的。(4)根據(jù)同一行或同一列中的直接內(nèi)容的數(shù)據(jù)類型是否相同,判斷表格布局。表格的業(yè)務(wù)數(shù)據(jù)中除去TL部分,TL的各個字段名下的單元格的數(shù)據(jù)只要不是空值的,它們的類型應(yīng)該都是相同的(該方法只能區(qū)分開‘純數(shù)字型字符串’、‘日期時間型字符串’、‘無明顯特征字符串’)。例如圖2中的表格為橫向布局,其中業(yè)務(wù)數(shù)據(jù)部分,除了第一行TL,其余每一列單元格的數(shù)據(jù)類型都是相同的,如字段名“序號”這一列都是純數(shù)字型字符串,字段名“執(zhí)行法院”這一列都是‘無明顯特征字符串’,字段名“執(zhí)行案號”這一列都是‘無明顯特征字符串’,總之,除TL行外,各列的數(shù)據(jù)類型都是相同的。根據(jù)上述特性,檢測同一行的數(shù)據(jù)類型是否都相同,若該表格所有行的數(shù)據(jù)類型都相同(即同一行中所有單元格的數(shù)據(jù)類型要么都為‘純數(shù)字型字符串’,要么都為‘日期時間型字符串’或‘無明顯特征字符串’),則該表格為縱向布局;檢測同一列的數(shù)據(jù)類型是否都相同,表格所有列的數(shù)據(jù)類型都相同(即同一列中所有單元格的數(shù)據(jù)類型要么都為‘純數(shù)字型字符串’,要么都為‘日期時間型字符串’或‘無明顯特征字符串’),則該表格為橫向布局。有些單元格會存在空值的情況,為避免這些單元格影響檢測結(jié)果,在對行和列做檢測時,內(nèi)容為空的單元格不納入檢測范圍。表格業(yè)務(wù)數(shù)據(jù)部分的數(shù)據(jù)量一般較多,對所有行和列都進行檢測會降低判斷效率,因此,可以采用短路判斷,即如果新的一行的判斷結(jié)果能否定某種布局,則可以跳出判斷。(5)根據(jù)th/td分布,判斷表格布局。TL的單元格數(shù)量小于或等于其它行的單元格數(shù)量,非TL的單元格數(shù)量應(yīng)當比較統(tǒng)一。根據(jù)th/td分布統(tǒng)計所有行和列的單元格數(shù)量,單元格數(shù)量明顯少的行或列就可能是TL,并根據(jù)TL是橫向還是縱向,TL的數(shù)量就可以得到表格布局了。th一般用來定義標題,對應(yīng)的就是‘姓名’、‘年齡’這樣的字段名。th的布局也可能有橫向、縱向的區(qū)別,如橫向布局為<thcolspan=’3’>成績表</th>,縱向布局為<throwspan=’3’>成績表</th>。td可以用來定義普通的單元格,也可以用來定義標題。同時有th標簽和td標簽時,根據(jù)th分布判斷表格布局。但是很多table不會指定th,此時根據(jù)td分布判斷表格布局。上述幾種判斷表格布局的方法可以根據(jù)實際需求進行各種組合后,對表格布局進行判斷,提高判斷準確率;另外,本實施例的方法能夠識別表格中的多TL的情況,提高抽取數(shù)據(jù)的可靠性。對于表格布局為縱向布局的情況,還需要將直接內(nèi)容形成的表格轉(zhuǎn)置為橫向布局。TL又分為單級TL、多級TL兩種,但在未做特別說明的情況下,都統(tǒng)稱為TL。如圖2所示,只有一個TL且為單級TL。如圖7所示,只有一個TL且為多級TL(由多行組成,有上下級的隸屬關(guān)系),需對這多行中的字段名進行合并,形成單行字段名輸出。如圖7所示,原表格中TL分為兩部分,左邊部分為多行(多級),右邊部分為單行,多級部分的第一級是合并單元格,字段名為‘基本信息’,多級部分的第二級是‘姓名’、‘年齡’、‘性別’字段,最終輸出單級TL,它的結(jié)構(gòu)為“基本信息_姓名”、“基本信息_年齡”、“基本信息_性別”、“其他字段A”、“其他字段B”。對于表格布局為多TL的情況,還需要對直接內(nèi)容形成的表格做切割合并操作,將其轉(zhuǎn)換為單TL的布局,以滿足結(jié)構(gòu)化數(shù)據(jù)的格式要求。切割合并操作包括:比較多個TL的直接內(nèi)容;內(nèi)容相同的TL只保留一行TL,如圖5所示;將內(nèi)容不同的TL拼接成一行TL,如圖6所示。最后,對于合并單元格,可根據(jù)業(yè)務(wù)需要,修正特殊標記。例如ABC{←}{←}{←}{←}可調(diào)整為以下格式:ABCABCABCABCABC上述自適應(yīng)抽取HTMLTable標簽中結(jié)構(gòu)化信息的方法是針對單個表格的提取方法,當網(wǎng)頁中存在多個Table標簽(多個表格)時,只需重復(fù)使用上述自適應(yīng)抽取HTMLTable標簽中結(jié)構(gòu)化信息的方法,抽取每個Table標簽對應(yīng)的表格,然后按預(yù)定的規(guī)則將抽取結(jié)果進行合并即可。針對div布局的數(shù)據(jù)抽取,步驟S24具體包括:從div標簽中獲取與已知業(yè)務(wù)字段名匹配的label,并根據(jù)label在div標簽中的位置判斷結(jié)構(gòu)布局,根據(jù)結(jié)構(gòu)布局獲取業(yè)務(wù)數(shù)據(jù)。其中,已知業(yè)務(wù)字段名可以是預(yù)先給定,或根據(jù)解析的歷史數(shù)據(jù)統(tǒng)計得到。Label為div標簽中的字段名,如示例一中的“姓名”、“年齡”和“性別”。示例一和示例二為div布局的表格。比如,根據(jù)已知業(yè)務(wù)字段名從div標簽中抽取出“姓名”、“年齡”和“性別”這三個字段名,在示例一中,抽取的label均在右側(cè)的標簽內(nèi),則可以確定該表格的結(jié)構(gòu)布局是左右的鍵值布局(縱向布局);而在示例二中,抽取的label均在一行標簽內(nèi),則可以確定該表格的結(jié)構(gòu)布局是上下布局(橫向布局)。示例一<div><div>姓名</div><div>張三</div></div><div><div>年齡</div><div>18</div></div><div><div>性別</div><div>男</div></div>示例二<div><div>姓名</div><div>年齡</div><div>性別</div></div><div><div>張三</div><div>18</div><div>男</div></div>基于與上述用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法相同的發(fā)明構(gòu)思,本實施例還提供了一種用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理裝置,如圖8所示,包括:結(jié)構(gòu)性變動檢測模塊,用于根據(jù)事先指定的特征,判斷當前頁面是否發(fā)生了局部結(jié)構(gòu)性變動;解析模塊,用于若未發(fā)生結(jié)構(gòu)性變動,則獲取當前頁面的結(jié)構(gòu)布局,根據(jù)當前頁面的結(jié)構(gòu)布局解析當前頁面中的內(nèi)容;字段自適應(yīng)調(diào)整模塊,根據(jù)預(yù)先配置的映射規(guī)則,對通過解析獲取的業(yè)務(wù)字段名做自適應(yīng)映射,并存儲到存儲區(qū)。本實施例提供的用于提高網(wǎng)絡(luò)爬蟲穩(wěn)定性、可用性的數(shù)據(jù)處理方法,可以自動識別網(wǎng)頁頁面的非結(jié)構(gòu)性變化,并采用自適應(yīng)的數(shù)據(jù)抽取邏輯,無須頻繁維護,節(jié)約了成本,同時提高了網(wǎng)頁數(shù)據(jù)爬取的穩(wěn)定性,具備更好的普適性。進一步地,結(jié)構(gòu)性變動檢測模塊具體用于:逐一比對事先指定的特征和當前頁面的對應(yīng)標簽,若不一致,則認為當前頁面發(fā)生了局部結(jié)構(gòu)性變動。進一步地,解析模塊具體用于:獲取當前頁面的HTML文件;從HTML文件抽取出Table標簽中的內(nèi)容和div標簽中的內(nèi)容;根據(jù)Table標簽中的內(nèi)容獲取當前頁面的結(jié)構(gòu)布局,根據(jù)當前頁面的結(jié)構(gòu)布局解析內(nèi)容;根據(jù)div標簽中的內(nèi)容獲取當前頁面的結(jié)構(gòu)布局,根據(jù)當前頁面的結(jié)構(gòu)布局解析內(nèi)容。進一步地,解析模塊中,根據(jù)Table標簽中的內(nèi)容獲取當前頁面的結(jié)構(gòu)布局,根據(jù)當前頁面的結(jié)構(gòu)布局解析內(nèi)容,包括:檢測Table標簽中的標題部分;抽取Table標簽中除標題部分的多維度信息;根據(jù)抽取的多維度信息判斷結(jié)構(gòu)布局;根據(jù)結(jié)構(gòu)布局獲取業(yè)務(wù)數(shù)據(jù)。進一步地,解析模塊中,根據(jù)div標簽中的內(nèi)容獲取當前頁面的結(jié)構(gòu)布局,根據(jù)當前頁面的結(jié)構(gòu)布局解析內(nèi)容,包括:從div標簽中獲取與已知業(yè)務(wù)字段名匹配的label,并根據(jù)匹配到的label在div標簽中的位置判斷結(jié)構(gòu)布局,根據(jù)結(jié)構(gòu)布局獲取業(yè)務(wù)數(shù)據(jù)。最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當中。當前第1頁1 2 3 當前第1頁1 2 3