GNE預處理技術——把 div 標籤中的正文轉移到 p 標籤中

GNE預處理技術——把 div 標籤中的正文轉移到 p 標籤中

GNE預處理技術——把 div 標籤中的正文轉移到 p 標籤中

攝影:產品經理
買單:kingname
大部分的新聞網站,其新聞正文是在 p 標籤中的。因此 GNE 在統計文本標籤密度時,會考慮 p 標籤的數量和 p 標籤中文本的數量。html

GNE預處理技術——把 div 標籤中的正文轉移到 p 標籤中

可是也有一些網站,他們的新聞正文是在 div 標籤中的,這種狀況下,這些 div 標籤就會干擾文本標籤密度的計算。
GNE預處理技術——把 div 標籤中的正文轉移到 p 標籤中node

div 標籤在 HTML 頁面佈局時有很大的做用,不能隨意改動。可是,若是一個 div 標籤它下面只有文本,沒有任何子標籤,那麼這個 div 標籤和 p 標籤沒有什麼本質區別。這種狀況下,能夠把這些 div 標籤轉換爲 p 標籤。ide

基於這個原理,GNE 設計了以下的邏輯:佈局

from lxml.html import fromstring, etree, HtmlElement
from html import unescape

def iter_node(element):
    yield element
    for sub_element in element:
        if isinstance(sub_element, HtmlElement):
            yield from iter_node(sub_element)

selector = fromstring(html)
for node in iter_node(selector):
    if node.tag.lower() == 'div' and not node.getchildren():
        node.tag = 'p'

運行效果以下圖所示:
GNE預處理技術——把 div 標籤中的正文轉移到 p 標籤中網站

其中, node.getchildren()用於獲取當前節點的全部直接子節點。設計

整個修改 div 標籤的過程,會直接修改Element 對象,不須要返回。code

GNE 的其餘關鍵技術,將會在接下來的文章中逐一放出,你也能夠點擊下方閱讀原文,跳轉到 GNE 的 Github 主頁,提早閱讀項目源代碼。xml

相關文章
相關標籤/搜索