2009-05-21 8 views
6

Estoy trabajando en el código para analizar un archivo de configuración escrito en XML, donde las etiquetas XML son mixtas y el caso es significativo. Beautiful Soup parece convertir etiquetas XML a minúsculas de forma predeterminada, y me gustaría cambiar este comportamiento.¿Puedo cambiar el comportamiento de BeautifulSoup con respecto a la conversión de etiquetas XML a minúsculas?

No soy el primero en hacer una pregunta sobre este tema [ver here]. Sin embargo, yo no entendía la respuesta a esa pregunta y en BeautifulSoup-3.1.0.1 BeautifulSoup.py no parece contener cualquier caso de "encodedName" o "Tag.__str__"

Respuesta

3

De acuerdo con Leonard Richardson, creador | mantenedor de Beautiful Soup, usted can't.

+0

[beautifulsoup4] (http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser) utiliza lxml para analizar xml. Puede usar html5lib para analizar html. Estos analizadores deberían preservar el caso de las etiquetas. – jfs

0

sólo tiene que utilizar un analizador XML propper en lugar de una eso es lib hechos para tratar con archivos en mal estado

i sugest a sólo echar un vistazo a xml.etree o lxml

6
import html5lib 
from html5lib import treebuilders 

f = open("mydocument.html") 
parser = html5lib.XMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup")) 
document = parser.parse(f) 

'documento' es ahora un árbol BeautifulSoup similar, pero conserva los casos de las etiquetas. Consulte html5lib para documentación e instalación.

1

Es mucho mejor usar lxml. Es mucho, mucho más rápido que BeautifulSoup. También tiene una API de compatibilidad para BeautifulSoup si no desea aprender la API lxml.

Ian Blicking agrees.

No hay ninguna razón para usar BeautifulSoup, a menos que esté en Google App Engine o algo en que no esté permitido nada que no sea puramente Python.

También es más adecuado para XML.

Cuestiones relacionadas