2024-03-29 06:28:26 发布
网友
有人能告诉我,有什么更好的方法来清理不好的HTML,这样BeautifulSoup就可以处理它了-应该使用beauthulsoup的按摩方法还是使用正则表达式清理它?在
从the documentation开始,按摩方法只是(regular expression, replacement function)的对,所以我不认为这真的是使用massaging或regexp的情况。在
(regular expression, replacement function)
例如,要整理格式错误的评论:
(re.compile('<!-([^-])'), lambda match: '<! ' + match.group(1))
如果您查看中_feed方法的源代码漂亮极了您将看到这些只是按照标记顺序运行:
_feed
因此,虽然您可以在BeautifulSoup看到标记之前自己进行一些regexp处理,但最好将所需的任何额外整理与默认内置的MARKUP_MASSAGE结合起来,如Oli's答案所示。在
MARKUP_MASSAGE
我想我应该重写我的答案。在
内置的按摩器对轻微损伤很好(额外的空白,没有闭合的斜杠等等)。我当然会在卷入此事之前设法逃脱惩罚。在
您可以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
你可能最好这样做,因为它都进入一个解析池,获得美化组优化。。。虽然运行时性能可能非常相似。在
从the documentation开始,按摩方法只是
(regular expression, replacement function)
的对,所以我不认为这真的是使用massaging或regexp的情况。在例如,要整理格式错误的评论:
如果您查看中
^{pr2}$_feed
方法的源代码漂亮极了您将看到这些只是按照标记顺序运行:因此,虽然您可以在BeautifulSoup看到标记之前自己进行一些regexp处理,但最好将所需的任何额外整理与默认内置的
MARKUP_MASSAGE
结合起来,如Oli's答案所示。在我想我应该重写我的答案。在
内置的按摩器对轻微损伤很好(额外的空白,没有闭合的斜杠等等)。我当然会在卷入此事之前设法逃脱惩罚。在
您可以pass in your own massages,我建议您扩展默认设置:
你可能最好这样做,因为它都进入一个解析池,获得美化组优化。。。虽然运行时性能可能非常相似。在
相关问题 更多 >
编程相关推荐