str - python unicode to utf8
Obtener personajes internacionales de una página web? (3)
Intenta usar BeautifulSoup . Debe hacer el truco y darle un DOM bien formateado para trabajar también.
Esta pregunta ya tiene una respuesta aquí:
- Decodificar entidades HTML en una cadena de Python? 5 respuestas
Quiero sacar algo de información de una página web de fútbol (soccer) usando expresiones regulares de python. El problema es que jugadores como el primero, ÄÄRITALO, salen como & # 196; & # 196; RITALO!
Es decir, html usa marcas de escape para los caracteres especiales, como & # 196;
¿Hay una manera simple de leer el html en la cadena de python correcta? Si fuera XML / XHTML, sería fácil, el analizador lo haría.
No lo he probado, pero lo has intentado
http://zesty.ca/python/scrape.html ?
Parece tener un método htmldecode (texto) que haría lo que quieras.
Recomendaría BeautifulSoup para raspar HTML. También debe indicarle que convierta las entidades HTML a los caracteres Unicode correspondientes, de la siguiente manera:
>>> from BeautifulSoup import BeautifulSoup
>>> html = "<html>ÄÄRITALO!</html>"
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
>>> print soup.contents[0].string
ÄÄRITALO!
(Sería bueno si el módulo estándar de códecs incluyera un códec para esto, de modo que pudiera hacer "some_string".decode(''html_entities'')
pero desafortunadamente no lo hace!)
EDITAR: Otra solución: el desarrollador de Python, Fredrik Lundh (autor de elementtree, entre otras cosas) tiene la función de deshacer las entidades HTML en su sitio web, que funciona con entidades decimales, hexadecimales y nombradas (BeautifulSoup no funcionará con las hexadecimales).