Python 如何删除BeautifulSoup中的虚假标记

Python 如何删除BeautifulSoup中的虚假标记,python,beautifulsoup,urllib,Python,Beautifulsoup,Urllib,我正在从总统辩论中提取文本。我发现这有一个问题:它错误地将“辩论”一词的每一次提及都变成了一个标签。继续,搜索“欢迎回到共和党总统宝座”;注意到一个明显的单词丢失了吗 很酷,所以BeautifulSoup在清理凌乱的HTML和添加结束标记方面做得非常出色。但在这种情况下,这会把我搞得一团糟,因为现在是的孩子,结尾的一直添加到最后;因此,剩下的争论就隐藏在这个标签中 我如何告诉BeautifulSoup忽略或删除?或者,如何在后面立即添加结束标记?我尝试过“展开”,但当我调用它时,BS已经在末尾设

我正在从总统辩论中提取文本。我发现这有一个问题:它错误地将“辩论”一词的每一次提及都变成了一个标签。继续,搜索“欢迎回到共和党总统宝座”;注意到一个明显的单词丢失了吗

很酷,所以BeautifulSoup在清理凌乱的HTML和添加结束标记方面做得非常出色。但在这种情况下,这会把我搞得一团糟,因为
现在是
的孩子,结尾的
一直添加到最后;因此,剩下的争论就隐藏在这个标签中

我如何告诉BeautifulSoup忽略或删除
?或者,如何在后面立即添加结束标记?我尝试过“展开”,但当我调用它时,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之间插入一些东西,但就我的一生而言,我不知道如何修改文件内容。

在处理
辩论
元素时做得更好(比
lxml
html.parser

soup = 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>

巴蒂罗莫:
欢迎回到共和党总统竞选
在北查尔斯顿。回到问题上来。[
掌声
]

处理
辩论
元素的工作(比
lxml
html.parser
更好):

soup = 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>

巴蒂罗莫:
欢迎回到共和党总统竞选
在北查尔斯顿。回到问题上来。[
掌声
]


它不会出错,但现在它不会使用对其他成绩单有效的行。例如transcript=soup.find_all(“span”,class=“displaytext”)[0](超出范围),当我运行print-soup.prettify()时,我可以看到我试图调用的span,但find_all不会抓住它。@ScottieB能否请您创建一个单独的问题,提供到目前为止的代码并描述症状?给我一个链接。谢谢。谢谢@alecxe的建议,张贴:它不会出错,但现在它不会使用其他成绩单上的行。例如transcript=soup.find_all(“span”,class=“displaytext”)[0](超出范围),当我运行print-soup.prettify()时,我可以看到我试图调用的span,但find_all不会抓住它。@ScottieB能否请您创建一个单独的问题,提供到目前为止的代码并描述症状?给我一个链接。谢谢。谢谢@alecxe的建议,发布: