繁体   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