美丽的汤结合了同名标签



我有多个标题标签,我想把它们组合成一个标题标签。以下是我所拥有的:(我想组合标题标签,这样当我打印汤时,标签就在一起了,我不想让它们变成字符串(

<title>
<b> Title Name 1 </b>
</title> 
<title>
Title Name 2
</title>

这是我想要的输出:

<title>
<b> Title Name 1 </b> Title Name 2
</title> 

到目前为止,我一直在尝试这样做:我创建了一个新标签,然后尝试将所有标题标签添加到其中,这样我以后就可以打开标题标签,只剩下一个标签:

<title>
<b> Title Name 1 </b>
</title> 
<title>
Title Name 2
</title>
<final-title>
</final-title>

for item in soup.findAll(['title', 'final-title']):
if item.name == 'final-title':
text = item
if item.name == 'title':
text.insert(len(text.contents),item)

然而,这种方法不会获取合适的标题名称,因为我有很多这样的标题标签。我也尝试过使用类似的soemthing(用BeautifulSoup包裹多个标签(

要使用.insert(),需要将字符串转换为list(),但我认为只需创建<title>.encode_contents()的列表innerHTML,然后将其组合更容易。

from bs4 import BeautifulSoup
html_raw = '''<title>
<b> Title Name 1 </b>
</title> 
<title>Title Name 2</title>
<final-title>
</final-title>
'''
title = []
soup = BeautifulSoup(html_raw, 'html.parser')
for item in soup.findAll(['title', 'final-title']):
if item.name == 'title':
title.append(item.encode_contents().strip())
combinedTitle = '<title>%s</title>' % ' '.join(title)
print combinedTitle
# output
# <title><b> Title Name 1 </b> Title Name 2</title>

最新更新