2009-10-14 4 views
2

Это сценарий у меня есть:Почему BeautifulSoup меняет мои самозакрывающиеся элементы?

import BeautifulSoup 

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

Когда бежал, это печатает:

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

Я хотел бы, чтобы это сохранить ту же структуру. Как я могу это сделать?

ответ

7

От Beautiful Soup documentation:

Наиболее распространенным недостатком BeautifulStoneSoup является то, что он не знает о самозакрывающихся тегов. HTML имеет фиксированный набор самозакрывающихся тегов, но с XML это зависит от того, что говорит DTD. Вы можете указать BeautifulStoneSoup, что некоторые теги являются самозакрывающимися, передавая их имена в качестве аргумента selfClosingTags конструктору

+0

Спасибо! Просто нашел это тоже :) – Geo