Python 使用BeautifulSoup提取CData

Python 使用BeautifulSoup提取CData,python,python-3.x,beautifulsoup,cdata,Python,Python 3.x,Beautifulsoup,Cdata,我试图使用bs4/Python 3中的BeautifulSoup来提取CData。但是,每当我使用以下命令搜索它时,它都会返回一个空结果。有人能指出我做错了什么吗 from bs4 import BeautifulSoup,CData txt = '''<foobar>We have <![CDATA[some data here]]> and more. </foobar>''' soup = Beau

我试图使用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)
从bs4导入美化组,CData
txt=''我们有
还有更多。
'''
汤=美汤(txt)
对于soup.findAll中的cd(text=True):
如果iInstance(cd、CData):
打印('CData内容:%r'%cd)

问题似乎是默认解析器没有正确解析CDATA。如果指定正确的解析器,CDATA将显示:

soup = BeautifulSoup(txt,'html.parser')
有关解析器的更多信息,请参阅

我是通过使用,这建议:

如果您对靓汤有任何疑问,或遇到问题,请向讨论组发送邮件。如果您的问题涉及解析HTML文档,请务必提及diagnose()函数对该文档的说明


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

在答案中可以找到类似的代码,这就是我假设您得到的结果。是的,可能是bs4的重复。是的,我过去使用过很多bs4,但从未捕捉到诊断内容。我相信这会在过去节省我的时间。:)