BeautifulSoup no es una biblioteca DOM per se (no implementa las API DOM). Para hacer las cosas más complicadas, estás usando espacios de nombres en ese fragmento xml. Para analizar esa pieza específica de XML, tendrá que utilizar BeautifulSoup de la siguiente manera:
from BeautifulSoup import BeautifulSoup
xml = """<xml>
<web:Web>
<web:Total>4000</web:Total>
<web:Offset>0</web:Offset>
</web:Web>
</xml>"""
doc = BeautifulSoup(xml)
print doc.find('web:total').string
print doc.find('web:offset').string
Si no se está usando espacios de nombres, el código podría tener este aspecto:
from BeautifulSoup import BeautifulSoup
xml = """<xml>
<Web>
<Total>4000</Total>
<Offset>0</Offset>
</Web>
</xml>"""
doc = BeautifulSoup(xml)
print doc.xml.web.total.string
print doc.xml.web.offset.string
La clave aquí es que BeautifulSoup no sabe (ni le importa) nada sobre los espacios de nombres. Por lo tanto, web:Web
se trata como una etiqueta web:web
en lugar de como una etiqueta Web
que pertenece al espacio de nombres web
. Mientras BeautifulSoup agrega web:web
al diccionario de elementos xml, la sintaxis de python no reconoce web:web
como un identificador único.
Puede obtener más información al leer documentation.
gracias! funciona perfectamente ahora Siempre estoy confundido en cuanto a qué dar para encontrar() ..y estas definiciones de espacio de nombres y la forma en que están escritas me confunde mucho ... ¡cualquier enlace para aclarar todo eso sería muy apreciado! – demos
Solo el enlace de documentación que ya te di ... y mucha experimentación. –
'AttributeError: el objeto 'NoneType' no tiene ningún atributo '% s'% –