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>'))

その結果、コードが2回挿入されました(<と>が追加されています)が、理由がわかりません。

<<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>>

1つのsoup.new_tag()で複数の新しいタグを作成できないというドキュメントには何も見つかりませんでした。何が問題なのでしょう?

4

1 に答える 1

1

私はあなたがBeautifulSoup4を使用していることを使用していると思いますか?その場合、問題は、new_tag()HTMLを挿入するどころか、1つで複数のタグを作成できないことです。

>>> 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 に答える