0

我正在尝试在 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>>

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

4

1 回答 1

1

我假设你正在使用你正在使用 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>

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

于 2012-08-27T11:20:44.843 回答