Skip to main content
 首页 » 编程设计

python之在 python 中使用 BeautifulSoup 从 XML 中的嵌套标签中提取文本

2025年05月04日11xiaohuochai

我正在尝试从嵌套标签中提取文本,例如 xml 的格式为:

<thread id = 1_1> 
  <post id = 1> 
    <title> 
      <ne>MediaPortal</ne> Install Guide 
    </title> 
    <content> 
      <ne>MediaPortal</ne> Install Guide 0. Introduction and pre-requisites  
      <ne>MediaPortal</ne> is an open-source and free full-fledged <ne>HTPC</ne> 
      front-end. It does everything you can ask for in a media center: video  
      playback, music playback, photo viewing, weather, TV tuning and recording,  
      etc. It has wide community support and thanks to it's excellent plug-in  
      and  skinning framework, there are lots of community-developed extensions  
      you can  pick and choose to make it your own. It is far more configurable  
      than <ne>Windows Media Center</ne>, and it works out-of-the-box with the  
      <ne>MCE</ne> remote. And because it provides so much more configuration  
      some find it a daunting task to install and configure. Therefore, this  
      guide will help alleviate some of that burden and help get a  
      <ne>MediaPortal</ne> installation up &amp; running. This guide is not  
      intended to replace the wonderful <ne>MediaPortal</ne> documentation, but  
      rather to introduce the AVS community to <ne>MediaPortal</ne> and provide 
      a quick and easy set-up guide. If you need more details on configuration 
    </content> 
  </post> 
</thread> 

我需要提取标签内的数据并将其保存在单独的文件中。我能够做到这一点,然后我从 BeautifulSoup 对象中提取标签。现在,我想从 和 标签中提取文本并将其放在一个单独的文件中。请给出一些如何实现的建议。

在从 soup 对象中提取标签之后

for title in soup.find('title') 
   print title.string 

然后在提取标签之前,它会在控制台上为具有标签的标题标签提供 None。

请您参考如下方法:

来自 BeautifulSoup 文档:

For your convenience, if a tag has only one child node, 
and that child node is a string,the child node is made 
available as tag.string, as well as tag.contents[0]. 

但是,在您的情况下:

>>> t = soup.find('title') 
<title><ne>MediaPortal</ne> Install Guide</title> 

因此,在您的情况下,您不能使用 tag.string。但是,您仍然可以使用 tag.contents 或 tag.text:

>>> t.contents 
[<ne>MediaPortal</ne>, u' Install Guide'] 
>>> t.text 
u'MediaPortalInstall Guide'