有人可以告诉我有什么更好的方法来清除不良HTML,以便BeautifulSoup可以处理它-应该使用BeautifulSoup的按摩方法还是使用正则表达式对其进行清理?

最佳答案

以为我应该改写我的回答。

内置按摩对光害有好处(多余的空格,无斜杠等)。我一定会尝试并在进一步参与之前摆脱这些。

您可以pass in your own massages,我建议您扩展默认设置:

import copy, re

myMassage = [(re.compile('<!-([^-])'), lambda match: '<!--' + match.group(1))]
myNewMassage = copy.copy(BeautifulSoup.MARKUP_MASSAGE)
myNewMassage.extend(myMassage)

BeautifulSoup(badString, markupMassage=myNewMassage)
# Foo<!--This comment is malformed.-->Bar<br />Baz

您最好以这种方式进行操作,因为这一切都进入了一个解析器,获得了BeautifulSoups优化...尽管运行时性能可能非常相似。

关于python - 用BeautifulSoup按摩或用Regex清洁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3061245/

10-11 22:49
查看更多