簡體   English   中英

如何在BeautifulSoup中刪除虛假標簽

[英]How do I remove a spurious tag in BeautifulSoup

我要從總統辯論中抽出文字。 我得到了一個有一個問題:它錯誤地變成了單詞“辯論”中提到每到一個標簽<debate> 繼續搜索“歡迎回到共和黨總統府”; 注意到一個明顯的詞不見了嗎?

太酷了,因此BeautifulSoup在清理雜亂的HTML並添加原本應該的結束標記方面做得非常出色。 但是在這種情況下,這使我感到困惑,因為<debate>現在是<p>的子級,並且結尾處</debate>最終被添加了。 因此,將剩下的辯論嵌套在該標簽內。

如何告訴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之間插入一些內容,但是對於我一生來說,我不知道如何修改文件內容。

在這種情況下, html5lib解析器在處理debate元素方面做得更好(比lxmlhtml.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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM