Python:使用正則去除HTML標簽(轉)


利用正則式處理,不知道會不會有性能問題,沒有經過太多測試。
目前我有很多還是使用BeautifulSoup進行這種處理。
HTML實體處理的只是用於處理一些常用的實體。

 1 # -*- coding: utf-8-*-
 2 import re
 3 ##過濾HTML中的標簽
 4 #將HTML中標簽等信息去掉
 5 #@param htmlstr HTML字符串.
 6 def filter_tags(htmlstr):
 7 #先過濾CDATA
 8     re_cdata=re.compile('//<!\[CDATA\[[^>]*//\]\]>',re.I) #匹配CDATA
 9     re_script=re.compile('<\s*script[^>]*>[^<]*<\s*/\s*script\s*>',re.I)#Script
10     re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I)#style
11     re_br=re.compile('<br\s*?/?>')#處理換行
12     re_h=re.compile('</?\w+[^>]*>')#HTML標簽
13     re_comment=re.compile('<!--[^>]*-->')#HTML注釋
14     s=re_cdata.sub('',htmlstr)#去掉CDATA
15     s=re_script.sub('',s) #去掉SCRIPT
16     s=re_style.sub('',s)#去掉style
17     s=re_br.sub('\n',s)#將br轉換為換行
18     s=re_h.sub('',s) #去掉HTML 標簽
19     s=re_comment.sub('',s)#去掉HTML注釋
20 #去掉多余的空行
21     blank_line=re.compile('\n+')
22     s=blank_line.sub('\n',s)
23     s=replaceCharEntity(s)#替換實體
24 return s
25 
26 ##替換常用HTML字符實體.
27 #使用正常的字符替換HTML中特殊的字符實體.
28 #你可以添加新的實體字符到CHAR_ENTITIES中,處理更多HTML字符實體.
29 #@param htmlstr HTML字符串.
30 def replaceCharEntity(htmlstr):
31     CHAR_ENTITIES={'nbsp':' ','160':' ',
32 'lt':'<','60':'<',
33 'gt':'>','62':'>',
34 'amp':'&','38':'&',
35 'quot':'"','34':'"',}
36 
37     re_charEntity=re.compile(r'&#?(?P<name>\w+);')
38     sz=re_charEntity.search(htmlstr)
39 while sz:
40         entity=sz.group()#entity全稱,如&gt;
41         key=sz.group('name')#去除&;后entity,如&gt;為gt
42 try:
43             htmlstr=re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1)
44             sz=re_charEntity.search(htmlstr)
45 except KeyError:
46 #以空串代替
47             htmlstr=re_charEntity.sub('',htmlstr,1)
48             sz=re_charEntity.search(htmlstr)
49 return htmlstr
50 
51 def repalce(s,re_exp,repl_string):
52 return re_exp.sub(repl_string,s)
53 
54 if __name__=='__main__':
55     s=file('Google.htm').read()
56     news=filter_tags(s)
57 print news

輸出結果:

Google網頁 圖片 地圖 資訊 視頻 財經 更多 博客 生活 熱榜 網站導航 日歷 照片 文檔 協作平台 輸入法 工具欄 軟件精選 更多 個性化首頁 | 登錄


高級搜索

使用偏好

語言工具所有網頁 中文網頁 簡體中文網頁 中國的網頁

廣告計划 – Google 大全 – Google.com in English2009 – 隱私權 – ICP證合字B2-20070004號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM