簡體   English   中英

使用BeautifulSoup提取CData

[英]Using BeautifulSoup to Extract CData

我正在嘗試使用bs4 / Python 3中的BeautifulSoup來提取CData。 但是,每當我使用以下內容搜索它時,它都會返回一個空結果。 誰能指出我做錯了什么?

from bs4 import BeautifulSoup,CData

txt = '''<foobar>We have
         <![CDATA[some data here]]>
         and more.
         </foobar>'''
soup = BeautifulSoup(txt)
for cd in soup.findAll(text=True):
    if isinstance(cd, CData):
        print('CData contents: %r' % cd)

問題似乎是默認解析器無法正確解析CDATA。 如果指定了正確的解析器,CDATA將顯示:

soup = BeautifulSoup(txt,'html.parser')

有關解析器的更多信息,請參閱文檔

我通過使用診斷函數來實現這一點,文檔建議:

如果您對Beautiful Soup有疑問或遇到問題,請發送郵件給討論組。 如果您的問題涉及解析HTML文檔,請務必提及diagnose()函數對該文檔的說明。

使用diagnose()函數可以輸出不同解析器如何看到您的html,這使您可以為您的用例選擇正確的解析器。

暫無
暫無

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

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