【问题标题】:Using BeautifulSoup to Extract CData使用 BeautifulSoup 提取 CData
【发布时间】:2023-04-04 00:40:01
【问题描述】:

我正在尝试使用来自 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)

【问题讨论】:

标签: python python-3.x beautifulsoup cdata


【解决方案1】:

问题似乎是默认解析器无法正确解析 CDATA。如果你指定了正确的解析器,CDATA 就会出现:

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

有关解析器的更多信息,请参阅the docs

我通过使用the diagnose function 得到了这个,the docs 推荐:

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

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

【讨论】:

  • 是的,我过去使用过很多 bs4,但从来没有发现诊断问题。我敢肯定这会节省我过去的时间。 :)
猜你喜欢
  • 2018-03-25
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多