河北11选5开奖结果注册

火車頭采集器過濾秘籍

編輯:最優化 日期:2016-09-23 13:19:27

 為了得到一個標準的內容,在采集上必須下足功夫才行!

我對標準內容的衡量:

  • 每一個段落都是<p></p>
  • 沒有多余的HTML標簽和與主題無關的字符

提取數據方式

選擇 正則提取,組合結果填 <p>[參數1]</p>

有些內容開始和結尾并沒有p標簽,換行是用br標簽來完成,所以我們要創造p標簽

數據處理

第一步把火車頭默認的HTML標簽排除中沒有的標簽都替換為空;如果發布到免費平臺,還要過濾些無法轉換的HTML特殊字符;另外就是與正文無關的內容,如中間的廣告什么的也可在這里清除。

純正則替換 </?em>|</?u>|</?blockquote>|<header>[sS]*?</header> 為空

其中'<header>[sS]*?</header>'是去除與正文內容無關的規則案例,不用的話可以去掉;要去除HTML特殊字符,在末尾加入'|&.*?;'即可

第二步:把非標準的段落標簽替換為標準的p標簽。

1、把普通換行替換為段落換行,用內容替換

<br(*)> 為 </p><p>

2、把<div>、<div class="center">、<p class="center">形式的標簽都替換成 <p>,同時</div>也要替換為</p>

內容替換 div(*)> 為 p>內容替換 <p(*)> 為 <p>

那么這里我為什么不用純正則 div.*?>|p.*?> 替換為 p> 呢,因為比較常出現的 '<p>&nbsp;</p>' 會被替換為'<p>&nbsp>'

第三步:清理工作

1、HTML標簽排除

點擊全選,把 '所有標簽<'前的勾去掉,之后根據需要把標簽前的勾去掉。一般只要把'段落<p'的勾去掉就可以了,了不起再把'圖像<img'的勾去掉,其他基本用不上。

2、清理p標簽前后的空白字符,如果不清理干凈會影響到后面的規則

純正則替換 s*(</?p>)s* 為 $1

3、刪除所有空段落

一般情況下只要設置了 內容替換 <p></p> 就可以了,但是實際應用中卻是會碰到一些特殊情況

當文中出現嵌套標簽 <p><p></p></p> 設置了內容替換<p></p>后,還會剩下一對<p></p>。

如果這組嵌套標簽出現在正文中間,這問題不難解決,只要在<p></p>內容替換前加上 正則替換 (<p>){2,}|(</p>){2,} 為 $1$2 這樣無論嵌套多少層標簽,最終都只剩下一對,之后內容替換<p></p>就可以完全清理干凈了。

如果出現在文章開頭或結尾,那就比較麻煩了。為了照顧非p標簽換行的文章,我們在正則提取時已經設置好 組合結果為 <p>[參數1]</p>,那么一旦出現嵌套標簽,會出現如下情況

<p><p><p></p></p> 最前面多了一個p,如果用上面的方法,那么最終就會把這些p替換干凈,可是文章開頭沒有p標簽合適嗎?我想到了2種解決辦法

1、針對采集頁的規則,從一開始就把這些嵌套標簽替換為空。缺點是不同網站的采集頁規則不同,工作量就增強了。

2、進行多次<p></p>內容替換,比如 <p><p><p></p></p> 進行2次替換后就只剩下<p>符合我們的要求。一般設置3次夠了,大多數網站的標簽不會超過3次嵌套。需要注意的是,采用這種方法就需要把多個p標簽替換為1個的正則替換規則往后移。

3、清理多余的p標簽,純正則替換

(<p>){2,}|(</p>){2,} 為 $1$2

只要連續出現2個以上的<p>或</p>都會替換成一個

4、清理可能出現的標簽,并把文中所有連續2個以上的空格過濾掉

純正則替換 <(?!/?p|img).*?>|s{2,} 為空

p標簽和img標簽外的所有標簽都會被過濾掉,不用擔心有雜七雜八的標簽出現

為什么要選擇2個以上的空格替換為空呢?因為文章中出現一個空格是有利于整潔的,如果包含英文那就更需要留這個空格了,而2個以上的空格一般是多余的,對正文沒有意義。

標簽:火車頭采集   采集過濾

河北11选5开奖结果注册本文地址:http://jnyiguo.cn/jishu/372.html

上一篇:WDCP環境安裝教程

下一篇:返回列表

75秒时时彩注册---河北11选5开奖结果注册_欢迎您 75秒时时彩_官网 75秒时时彩-河北11选5开奖结果注册 75秒时时彩|官方唯一指定! 75秒时时彩_安全购彩 快乐赛车_官网 陕西快乐10分开奖结果今天陕西快乐10分开奖结果今天陕西快乐10分开奖结果今天广东快乐10分开奖直播平台 -【专业购彩平台】广东快乐10分开奖直播注册---十分彩官网_欢迎您广东快乐10分开奖直播_官网