BeautifulSoup new_tag插入两次



我试图在带有的BeautifulSoup中同时向div[id='head']添加几个标签

soup.find_all('div', id='head',limit=1)[0].insert(1, soup.new_tag(u'<div id="menu_top_right" class="menu_top"><div class="menu_inner"><a class="" target="_blank" href="./local/zkratky/index.html">Zkratky</a><span>|</span><a class="" target="_blank" href="./local/slovnik/index.html">Slovník</a><span>|</span><a class="" target="blank" href="./local/dokumenty/index.html">Dokumenty</a></div></div><div class="clear"></div>'))

结果,我插入了两次代码(添加了一些额外的<和>),但不知道为什么。

<<div id="menu_top_right" class="menu_top">
    <div class="menu_inner">
        <a class="" target="_blank" href="./local/zkratky/index.html">Zkratky</a><span>|</span>
        <a class="" target="_blank" href="./local/slovnik/index.html">Slovník</a><span>|</span>
        <a class="" target="blank" href="./local/dokumenty/index.html">Dokumenty</a>
   </div>
</div>
<div class="clear"></div>>
</<div id="menu_top_right" class="menu_top">
    <div class="menu_inner">
        <a class="" target="_blank" href="./local/zkratky/index.html">Zkratky</a><span>|</span>
        <a class="" target="_blank" href="./local/slovnik/index.html">Slovník</a><span>|</span>
        <a class="" target="blank" href="./local/dokumenty/index.html">Dokumenty</a>
    </div>
</div>
<div class="clear"></div>>

我在文档中没有发现任何内容表明不能用一个汤创建多个新标签。new_tag()。可能有什么问题?

我假设您正在使用BeautifulSoup4?如果你这样做,问题是你不能用一个new_tag()创建多个标签,更不用说插入HTML:了

>>> soup.new_tag('<div myattr="foo"></div>')
<<div myattr="foo"></div>></<div myattr="foo"></div>>

您必须单独创建每个子项,并手动分配属性:

>>> parent = soup.find('div')
>>> parent
<div></div>
>>> new_tag = soup.new_tag('div')
>>> new_tag['id'] = 'menu_top_right'
>>> new_tag['class'] = 'menu_top'
>>> new_tag
<div class="menu_top" id="menu_top_right"></div>
>>> parent.insert(1, new_tag)
>>> soup
<div><div class="menu_top" id="menu_top_right"></div></div>

编辑:语法高亮显示使这看起来很奇怪。

最新更新