【发布时间】:2010-09-07 10:33:06
【问题描述】:
因为正则表达式让我害怕,所以我试图找到一种方法来删除所有 HTML 标记并从 Python 中的字符串中解析 HTML 实体。
【问题讨论】:
-
其实Dive Into Python的链接应该是this
因为正则表达式让我害怕,所以我试图找到一种方法来删除所有 HTML 标记并从 Python 中的字符串中解析 HTML 实体。
【问题讨论】:
使用BeautifulSoup!这是完美的,你有可疑美德的传入标记,需要从中得到一些合理的东西。只需传入原文,提取所有字符串标签,加入即可。
【讨论】:
虽然我同意 Lucas 的观点,即正则表达式并不那么可怕,但我仍然认为您应该使用专门的 HTML 解析器。这是因为 HTML 标准非常复杂(特别是如果您想解析从 Internet 上删除的任意“HTML”页面),您需要编写大量代码来处理极端情况。看来python includes one out of the box。
您还应该查看python bindings for TidyLib,它可以清理损坏的 HTML,使任何 HTML 解析的成功率更高。
【讨论】:
如何在解析器的帮助下解析 HTML 数据并提取数据?
我会尝试类似chapter 8.3 in the Dive Into Python book中描述的作者
【讨论】:
如果你使用 django,你也可以使用 http://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags ;)
【讨论】:
您可能需要比正则表达式更复杂的东西。网页通常带有不属于标记的尖括号,如下所示:
<div>5 < 7</div>
用正则表达式剥离标签将返回字符串“5”并处理
< 7</div>
作为单个标签并将其剥离。
我建议寻找已经编写好的代码来为你做这件事。我搜索了一下,发现:http://zesty.ca/python/scrape.html 也可以解析 HTML 实体。
【讨论】:
正则表达式并不可怕,但编写你自己的正则表达式来剥离 HTML 肯定会让人发疯(而且它也不会起作用)。遵循智慧之路,使用众多优秀的 HTML 解析库之一。
Lucas 的示例也被破坏了,因为“sub”不是 Python 字符串的方法。您必须“导入 re”,然后调用 re.sub(pattern, repl, string)。但这既不是这里也不是那里,因为您问题的正确答案不涉及编写任何正则表达式。
【讨论】:
看看人们在此处的其他答案中展示的意义,我想说使用正则表达式可能不是适合您的情况的最佳主意。去尝试和测试过的东西,并将我之前的答案视为正则表达式不必那么可怕的证明。
【讨论】: