使用BeautifulSoup替换标签时请保留孩子

时间:2015-06-10 23:53:56

标签: python beautifulsoup

我正在尝试替换表单标记而不删除其子代。例如,我想转换它:

<form>
    <input type="text"/>
    <input type="text"/>
</form>

对此:

<p>
    <input type="text"/>
    <input type="text"/>
</p>

但我得到了:

<p></p>

这就是我现在正在尝试做的事情:

from bs4 import BeautifulSoup

content = '<form><input type="text"/><input type="text"/></form>'
soup = BeautifulSoup(content)

old_form = soup.find('form')
new_form = soup.new_tag('p')

old_form.replace_with(new_form)  
print soup

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

使用.name属性对我有用:

from bs4 import BeautifulSoup

content = '<form><input type="text"/><input type="text"/></form>'
soup = BeautifulSoup(content)

form = soup.find('form')
form.name = 'p'

print form.prettify()
<p>
 <input type="text"/>
 <input type="text"/>
</p>