如何删除BeautifulSoup中的虚假标记

时间:2016-05-03 16:43:50

标签: python beautifulsoup urllib

我从总统辩论中提取文字。我得到one有一个问题:它错误地提到每一个字#&#34;辩论&#34;到标记<debate>。继续,搜索&#34;欢迎回到共和党总统候选人&#34 ;;注意到一个明显的字缺失了吗?

很酷,所以BeautifulSoup可以很好地清理凌乱的HTML并添加关闭标签,如果它们应该。但是在这种情况下,这让我感到困惑,因为<debate>现在是<p>的孩子,而结束</debate>在最后的路上被添加到了allllll;从而将剩余的辩论嵌入该标签中。

如何告诉BeautifulSoup忽略或删除<debate>?或者,如何在紧接着之后添加结束标记?我尝试打开包装,但是当我可以打电话给它时,BS已经在最后设置了结束标签,从而使得以下段落是儿童而不是兄弟姐妹。

以下是我的设置方式:

from bs4 import BeautifulSoup
import urllib

bad_debate = 'http://www.presidency.ucsb.edu/ws/index.php?pid=111395'
file = urllib.urlopen(bad_debate)
soup = BeautifulSoup(file)

我的预感是我需要在url调用和BeautifulSoup之间插入一些东西,但是对于我的生活,我无法弄清楚如何修改文件内容。

1 个答案:

答案 0 :(得分:2)

在这种情况下,

html5lib parser在处理html.parser元素方面做得更好(而不是debatesoup = BeautifulSoup(file, "html5lib") ):

<p>
    <b>
     BARTIROMO:
    </b>
    Welcome back to the Republican presidential
    <debate>
     here in North Charleston. Right back to the questions. [
     <i>
      applause
     </i>
     ]
    </debate>
</p>

以下是它如何处理辩论的上述部分:

{{1}}