python 如何过滤 HTML标签?

2012-05-21 20:43:51 +08:00
 tioover
12947 次点击
所在节点    Python
17 条回复
wong2
2012-05-21 20:46:43 +08:00
VeryCB
2012-05-21 20:48:23 +08:00
VeryCB
2012-05-21 20:49:33 +08:00
lackrp
2012-05-21 20:54:58 +08:00
过滤是指要去掉么?

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

如果只是过滤部分标签,干嘛不直接穷举好了?
magicshui
2012-05-22 21:08:14 +08:00
BeautifulSoup感觉简单些~

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

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

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

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

© 2021 V2EX