在当前标记之后添加新的HTML标记

时间:2017-05-28 21:02:09

标签: python beautifulsoup

我有一个循环:

for tag in soup.find('article'):

我需要在此循环中的每个标记之后添加一个新标记。我试图使用insert()方法无济于事。

如何使用BeautifulSoup解决此任务?

1 个答案:

答案 0 :(得分:6)

您可以使用insert_after,如果您尝试迭代节点集,也可能需要find_all而不是find

from bs4 import BeautifulSoup
soup = BeautifulSoup("""<article>1</article><article>2</article><article>3</article>""")

for article in soup.find_all('article'):

    # create a new tag
    new_tag = soup.new_tag("tagname")
    new_tag.append("some text here")

    # insert the new tag after the current tag
    article.insert_after(new_tag)

soup

<html>
    <body>
        <article>1</article>
        <tagname>some text here</tagname>
        <article>2</article>
        <tagname>some text here</tagname>
        <article>3</article>
        <tagname>some text here</tagname>
    </body>
</html>