我从总统辩论中提取文字。我得到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之间插入一些东西,但是对于我的生活,我无法弄清楚如何修改文件内容。
答案 0 :(得分:2)
html5lib
parser在处理html.parser
元素方面做得更好(而不是debate
或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>
以下是它如何处理辩论的上述部分:
{{1}}