2009-10-14 5 views
2

Ceci est le script que j'ai:Pourquoi BeautifulSoup modifie-t-il mes éléments de fermeture automatique?

import BeautifulSoup 

if __name__ == "__main__": 
    data = """ 
    <root> 
     <obj id="3"/> 
     <obj id="5"/> 
     <obj id="3"/> 
    </root> 
    """ 
    soup = BeautifulSoup.BeautifulStoneSoup(data) 
    print soup 

Quand couru, cette impression:

<root> 
    <obj id="3"></obj> 
    <obj id="5"></obj> 
    <obj id="3"></obj> 
</root> 

Je voudrais pour garder la même structure. Comment puis je faire ça?

Répondre

7

De l'Beautiful Soup documentation:

La lacune la plus courante de BeautifulStoneSoup est qu'il ne sait pas sur les balises de fermeture automatique. HTML a un ensemble fixe de balises à fermeture automatique, mais avec XML, cela dépend de ce que dit la DTD. Vous pouvez dire BeautifulStoneSoup que certaines étiquettes sont auto-fermantes en transmettant leurs noms sous la forme de l'argument selfClosingTags au constructeur

+0

Merci! Je l'ai juste trouvé aussi :) – Geo