使用beautifulsoup在xml文件中删除html注释标记

时间:2016-02-18 07:19:39

标签: python html xml beautifulsoup

首先,这不是一个重复的问题(感谢您没有将其标记为重复!)

在我的xml文件中,有以此样式注释的字段:

<series>lecture</series>

<date>Wed, 23 Sep 2015 16:00:00 </date>

<duration><!-- 0:30 --></duration>
<room><!--MI 01.11.114 --></room>

<language>en</language>
标签<duration><room>内的

。我使用beautifuloup使用以下脚本从其某些实体制作一个简单的html文件:

from bs4 import BeautifulSoup


soup = BeautifulSoup(open("metadata.xml"))
soup.prettify()

print("<br>")
print(soup.series)
print("</br>")
print("<br>")
print(soup.date)
print("</br>")
print("<br>")
print(soup.duration)

只是为了在html页面上获得如下所示的简单概述(使用:python test.py >> test.html):

lecture
0:30
MI 01.11.114

但是字段的空间和持续时间都没有了,我得到了这个:

lecture

如何从这些字段中删除<!-- -->,以便能够将其显示为series代码?

p.s:这不是微不足道的,但我也想知道是否有办法获得如下所示的最终结果(显示剥离的标签,在其内容旁边)

series:   lecture
duration:   0:30
room:    MI 01.11.114

这一定是一个简单的问题,但我有些失落,感谢任何形式的帮助。

1 个答案:

答案 0 :(得分:1)

来自Beautifulsoup docs

  

Comment对象只是一种特殊类型的NavigableString:

你可以通过以下方式获取它们:

print(soup.room.string)
print(soup.duration.string)

循环键/值:

for elt in ('series', 'duration', 'room'):
        print('%s: %s' % (getattr(soup, elt).name, getattr(soup, elt).string))