有人可以告诉我有什么更好的方法来清除不良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/