使用BeautifulSoup提取CData



我正在尝试使用bs4/Python3中的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')

有关解析器的更多信息,请参阅文档

我是通过使用文档推荐的诊断功能来了解这一点的:

如果你对美丽汤有疑问,或者遇到问题,请发送邮件到讨论组。如果您的问题涉及解析HTML文档,请务必提及diagnoste()函数对该文档的描述。

使用diagnoste()函数可以输出不同的解析器如何查看您的html,这使您能够为您的用例选择正确的解析器。

最新更新