过滤掉HTML标签并解析python中的实体

时间:2008-09-01 05:25:02

标签: python html

因为正则表达式让我害怕,所以我试图找到一种方法来删除所有HTML标记并从Python中的字符串中解析HTML实体。

8 个答案:

答案 0 :(得分:40)

使用lxml这是python的最佳xml / html库。

import lxml.html
t = lxml.html.fromstring("...")
t.text_content()

如果您只想清理hx外观lxml.html.clean module

答案 1 :(得分:16)

使用BeautifulSoup!它是完美的,你可以获得可疑的美德标记,并需要从中得到合理的东西。只需传入原始文本,提取所有字符串标记,然后加入它们。

答案 2 :(得分:6)

虽然我同意卢卡斯的观点,正则表达式并不那么可怕,但我仍然认为你应该使用专门的HTML解析器。这是因为HTML标准足够多(特别是如果你想解析从Internet上取下的任意“HTML”页面)你需要编写大量代码来处理极端情况。看来python includes one out of the box

您还应该查看可以清除损坏的HTML的python bindings for TidyLib,从而使任何HTML解析的成功率更高。

答案 3 :(得分:4)

如何在解析器的帮助下解析HTML数据并提取数据?

我会尝试像chapter 8.3 in the Dive Into Python book

中描述的作者

答案 4 :(得分:2)

如果您使用django,您也可以使用 http://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags ;)

答案 5 :(得分:1)

您可能需要比正则表达式更复杂的东西。网页通常具有不属于标记的尖括号,如下所示:

 <div>5 < 7</div>

使用正则表达式剥离标记将返回字符串“5”并处理

 < 7</div>

作为单个标签并将其剥离。

我建议寻找已经编写的代码,为您完成此操作。我做了一个搜索,发现了这个:http://zesty.ca/python/scrape.html它也可以解析HTML实体。

答案 6 :(得分:0)

正则表达式并不可怕,但编写自己的正则表达式来剥离HTML是一条确定的疯狂之路(也不会起作用)。遵循智慧的道路,并使用众多优秀的HTML解析库之一。

卢卡斯的例子也被打破了,因为“sub”不是Python字符串的方法。你必须“导入re”,然后调用re.sub(pattern,repl,string)。但这既不是在这里也不是在那里,因为你的问题的正确答案不涉及写任何正则表达式。

答案 7 :(得分:0)

看看人们在其他答案中展示的感觉量,我会说使用正则表达式可能不是最适合你情况的想法。去尝试和测试一些东西,并将我之前的答案视为正则表达式,即正则表达式 可怕。