因为正则表达式让我害怕,所以我试图找到一种方法来删除所有HTML标记并从Python中的字符串中解析HTML实体。
答案 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数据并提取数据?
中描述的作者答案 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)
看看人们在其他答案中展示的感觉量,我会说使用正则表达式可能不是最适合你情况的想法。去尝试和测试一些东西,并将我之前的答案视为正则表达式,即正则表达式 可怕。