utf8 str parser python html parsing unicode

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 entrada en el blog parece haber tenido cierto éxito.

Esta pregunta ya tiene una respuesta aquí:

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.



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>&#196;&#196;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).