python 如何过滤 HTML标签?

2012 年 5 月 21 日
 tioover
13996 次点击
所在节点    Python
17 条回复
wong2
2012 年 5 月 21 日
VeryCB
2012 年 5 月 21 日
VeryCB
2012 年 5 月 21 日
lackrp
2012 年 5 月 21 日
过滤是指要去掉么?

import re
pattern = re.compile(r'<.*?>')
pattern.sub('', html)
gee
2012 年 5 月 21 日
@VeryCB 你说得一点都不靠谱吧...你给的都是解析html的...
phuslu
2012 年 5 月 21 日
python readability
VeryCB
2012 年 5 月 21 日
@gee 初学者...过滤不是把Html标签去掉然后提取内容么?
eric_q
2012 年 5 月 21 日
我……我还是想用shell
gee
2012 年 5 月 21 日
@VeryCB 问题是不了解具体的html结构啊。当然了,用PyQuery直接取全体的text()也可以,但是有点绕路了
TheC
2012 年 5 月 21 日
@lackrp 你这哪里是过滤html标签,误伤也太大了
lackrp
2012 年 5 月 21 日
@TheC 正确的html的话,这样应该不会误伤啊
eerie
2012 年 5 月 21 日
TheC
2012 年 5 月 21 日
@lackrp 仔细想想确实是,抱歉刚才回的太快了,理所当然觉得除了html标签还有其他被<>包括的文本了:)
tioover
2012 年 5 月 21 日
@lackrp 额。我的意思是过滤掉诸如<sript><iframe>之类的标签只允许一些安全的标签,为了安全……
cute
2012 年 5 月 22 日
@tioover

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup('<html><p>abc</p><script></script><br />abc</html>')
for tag in soup.recursiveChildGenerator():
.... if hasattr(tag, 'name') and tag.name in ['script', 'iframe']:
........tag.extract()
print soup.renderContents('utf-8')
leiz
2012 年 5 月 22 日
@tioover

如果只是过滤部分标签,干嘛不直接穷举好了?
magicshui
2012 年 5 月 22 日
BeautifulSoup感觉简单些~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/36790

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX