如何从下载的页面中删除所有html标签

Ole*_*nko 5 python

我已经使用urlopen下载了一个页面.如何从中删除所有html标签?是否有任何正则表达式替换所有<*>标签?

小智 37

我还可以推荐BeautifulSoup,它是一个易于使用的html解析器.在那里你会做类似的事情:

from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(html)
all_text = ''.join(soup.findAll(text=True))
Run Code Online (Sandbox Code Playgroud)

这样您就可以从html文档中获取所有文本.

  • 你的论点是无效的. (15认同)

Jer*_*bin 10

有一个很棒的python库叫做漂白剂.下面的调用将删除所有html标记,保留其他所有内容(但不删除不可见的标记内的内容).

bleach.clean(thestring, tags=[], attributes={}, styles=[], strip=True)
Run Code Online (Sandbox Code Playgroud)


Gui*_*ois -4

一个非常简单的正则表达式是:

import re
notag = re.sub("<.*?>", " ", html)
Run Code Online (Sandbox Code Playgroud)

此解决方案的缺点是它不会删除 javascript 或 css,而仅删除标签。

  • -1:不明智的、脆弱的解决方案。使用额外的“&lt;”或“&gt;”来打破这一点将很难调试页面。 (6认同)
  • 它简单高效,清理数据非常简单,我个人每天都在使用它。当遇到更复杂的问题时,我会使用 BeautifulSoup,但是请:让我们保留简单的问题_simples_。你在这里提到的案例即使不是不存在,也是罕见的。仅当您需要所有潜在数据并且需要绝对干净的数据时,才需要考虑它。 (5认同)