Beautifulsoup:Soupy runny xml,单循环迭代每个项目

时间:2014-04-10 03:08:55

标签: python xml beautifulsoup

假设你有一些像这样结构化的XML,但可以采用任何形状使用这些标签,使用相同的标签名称更深,并且可以以奇怪的方式重复使用:

<a>
    <b>
        <c />
    </b>
    <b>
        <c />
    </b>
    <b>
        <b>
            <d>
                <b>
                    <e>
                        <f>
                            <c />
                        </f>
                    </e>
                </b>
                <b>
                    <e>
                        <f>
                            <c />
                        </f>
                    </e>
                </b>
            </d>
        </b>
    </b>
    <b>
        <b>
            <c />
        </b>
    </b>
</a>

我想让它按照从上到下依次出现的顺序逐个浏览每个标签,重复的标签可以按任何顺序或结构使用。我想使用beautifulsoup逐个浏览每个标签。例如:

soup = BeautifulSoup(xmlcode, "xml")
for asd in soup.findAll(True, recursive=False):
    print asd.prettify()
    print "---------"

所有这些返回的是一个大的bs4.element.Tag。我希望它按照它们出现的顺序返回19行。基本上我想做的就是使用希望单个循环或尽可能少的循环遍历每个单独的标记。如果可能的话,我会比beautifulsoup更好的选择。

1 个答案:

答案 0 :(得分:0)

您正在寻找.children

xml_soup = BeautifulSoup(xml, "xml")
for tag in xml_soup.children:
    print tag