車聯網系統新聞正文提取方法與流程
2023-07-05 22:21:51 1
本發明涉及車聯網系統,具體涉及一種車聯網系統新聞正文提取方法。
背景技術:
RSS訂閱源是獲取新聞的常見通道,但是通常由於結構限制,RSS訂閱源中只會包含有新聞的摘要信息,而具體的新聞正文則需要訪問RSS數據中給出的新聞連結來在瀏覽器端展現。在沒有瀏覽器支持的情況下(如語音播報新聞,純文字新聞顯示等),需要有一種算法能夠將頁面展示的新聞內容提取成為純文本。
技術實現要素:
本發明所要解決的技術問題是:提出一種車聯網系統新聞正文提取方法,在沒有瀏覽器支持的情況下將頁面展示的新聞內容提取成為純文本,便於處理。
本發明解決其技術問題所採用的技術方案是:
車聯網系統新聞正文提取方法,包括以下步驟:
a.對採用div布局結構的新聞頁面進行分析,遍歷頁面的document對象,找到內部的所有div標籤包裹的結構;
b.對於每個標籤組,使用標籤堆棧記錄標籤,使用段落堆棧記錄其在內的正文內容;
c.每提取一個段落將其加入正文堆棧中,直至所有段落提取完成;
d.對正文堆棧中的各段落的文字長度進行排序,其中文字長度最大的段落作為正文輸出。
作為進一步優化,在步驟c中,將提取的段落加入正文堆棧之前還包括對段落進行調序操作:
對記錄在段落堆棧中的正文內容按照出棧順序向段落調序堆棧入棧;段落調序堆棧按照出棧順序組成完整正文再向正文堆棧入棧。
作為進一步優化,步驟a中,當遍歷頁面的document對象發現幹擾時,對幹擾不予處理。
本發明的有益效果是:
1)可以依照指定的標籤嵌套規則將網頁新聞快速準確解析出對應的純文本內容;
2)可以在一定程度上自動解析出一段網頁標籤嵌套中的非連續的正文段落並加以整合;
3)如果存在多種正文可能,本發明的算法可以按照正文的可能性大小排序並提取正文。
附圖說明
圖1為實施例中的車聯網系統新聞正文提取方法流程圖。
具體實施方式
本發明旨在提出一種車聯網系統新聞正文提取方法,在沒有瀏覽器支持的情況下將頁面展示的新聞內容提取成為純文本,便於處理。本發明方案包括以下步驟:
a.對採用div布局結構的新聞頁面進行分析,遍歷頁面的document對象,找到內部的所有div標籤包裹的結構;
b.對於每個標籤組,使用標籤堆棧記錄標籤,使用段落堆棧記錄其在內的正文內容;
c.每提取一個段落將其加入正文堆棧中,直至所有段落提取完成;
d.對正文堆棧中的各段落的文字長度進行排序,其中文字長度最大的段落作為正文輸出。
基於上述方案,本發明具備以下功能:
1.可以依照指定的標籤嵌套規則(div嵌套規則)將網頁新聞解析出對應的純文本內容;
解析正文內容依照div布局的頁面,可以解析由多個div布局相嵌套的頁面正文;
2.可以在一定程度上自動解析出一段網頁標籤嵌套中的非連續的正文段落並加以整合;
3.如果存在多種正文可能,算法可以按照正文的可能性大小排序:對解析出的正文內容按照文字佔比(段落文字多少)排序並降噪,文字佔比越大的排序越靠前,其為新聞正文的可能性越大。
實施例:
本實施例以對Sina新聞的新聞頁面進行分析為例,如圖1所示,其包括以下實現步驟:
1.由於採用了div布局結構,新聞正文或者需要展現的結構(比如圖片等)都是使用div標籤包裹的.我們將頁面的document遍歷出來找到內部的所有div包裹的結構.再根據對文字的判定來區分是不是備選的正文內容。
2.選定div標籤後,每個div結構中有可能是一個嵌套的過程.對於每個標籤組我們需要使用堆棧來記錄其內在的結構;
3.假定結構是正文1幹擾正文2:
3.1當檢測到第一個標籤時,我們就認為進入到了一個正文檢測區域並且我們將這個標記入棧操作;
3.2這個時候我們繼續遍歷document會得到第二個div標記(位於「正文1」前的第二個div標記),我們繼續入棧這個標籤;
3.3繼續遍歷document發現「正文1」,此時我們將正文內容提取出來單獨放入段落堆棧;
3.4繼續遍歷document發現標籤,此時按照算法出棧一個標籤;
3.5繼續遍歷document發現標籤,則繼續入棧這個標籤;
3.6繼續遍歷document發現幹擾(幹擾包括一切不屬於文字的標記內容比如[圖像]標記),按照規則對幹擾不處理,則繼續遍歷document發現標籤,重複3.4出棧一個;
3.7繼續遍歷document發現標籤,重複3.3,得到正文2放入段落堆棧(正文1|正文2);
3.8繼續訪問直到訪問到最後的,此時需要出棧最後的一個標籤,標籤堆棧內容為空,對於一段疑似正文的div嵌套結構拆解完畢.得到段落堆棧中的(正文1|正文2),這就是一個備選正文內容;
4.段落堆棧中存放的結構是(正文1|正文2|...|正文n),這個只是一段疑似正文,正真的正文需要比對整個document,每提取出一個段落(正文1+正文2+...+正文n)我們需要將這個段落加入正文堆棧(段落1|段落2|...|段落n)。
5.新聞頁面有一個特點是,正文在絕大多數情況下是文字佔比最大的段落,所以我們對正文堆棧的內容做長度排序,最長段落就是最大機率的新聞正文,輸出該段落的文字內容即可。