爲了得到一個標準的內容,在採集上必須下足功夫纔行!編寫好採集規則。
我對標準內容的衡量:
每一個段落都是<p></p>
沒有多餘的HTML標籤和與主題無關的字符
提取數據方式
選擇 正則提取,組合結果填 <p>[參數1]</p>
有些內容開始和結尾並沒有p標籤,換行是用br標籤來完成,所以我們要創造p標籤
數據處理
第一步:清除與正文無關的內容,如文中的廣告,註釋等
正則 <header>[\s\S]*?</header>|<!--.*?-->| |規則4|規則5 替換爲 空
如果發佈到一些免費平臺,有的HTML特殊字符並不會被轉化,只需在末尾加入'|&.*?;'過濾掉最後特殊HTML字符即可。
第二步:只保留圖片以及常用的塊級元素
正則 (?i)<(?!/?h|/?p|/?div|br|img).*?> 替換爲 空
只保留標題標籤 h 分段標籤 p、div、br 以及圖像標籤 img ;前面的(?i)表示不區分大小寫
第三步:去掉除了img標籤外的所有標籤的選擇器或樣式,並把標籤修改爲p
正則 <(?!img)(/?)\w+.*?> 替換爲 <$1p>
第四步:把亂七八糟的圖像樣式,改成標準圖像代碼
正則 <img.*?src="(.+?)".*?> 替換爲 <img src="$1">
第五步:規範段落標籤<p>開始</p>結束
正則 </?p>替換爲</p><p>
慧聰網段落只有<p>開始沒有</p>結束
某些站個別文章,</p>結束後沒有<p>開始就直接是下個段落的內容
第六步:把<p>或</p>前後的空格替換爲空
正則 \s*(<\/?p>)\s* 替換爲 $1
第七步:把連續2個以上的<p>或</p>替換爲1個
正則 (<p>){2,}|(</p>){2,} 替換爲 $1$2
第八步:把所有的空段落替換爲空
內容 <p></p> 替換爲 空
第九步:由於第五步的關係,文章開頭可能是</p>結尾可能是<p>需要清理他們
正則 ^</p>|<p>$ 替換爲 空
過濾英文正則 [a-zA-Z]
正則過濾兩位以上的數字(\d{2,100})