Pregunta

Esta pregunta ya tiene respuesta aquí:

Quiero extraer información de una página web de fútbol usando expresiones regulares simples de Python.¡El problema es que jugadores como el primer personaje, ÄÄRITALO, salen como ÄÄRITALO!
Es decir, HTML utiliza marcado con escape para los caracteres especiales, como Ä

¿Existe una forma sencilla de leer el html en la cadena de Python correcta?Si fuera XML/XHTML sería fácil, el analizador lo haría.

¿Fue útil?

Solución

yo recomendaria hermosasopa para raspado de HTML.También debes indicarle que convierta entidades HTML a los caracteres Unicode correspondientes, así:

>>> 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 estándar códecs El módulo incluía un códec para esto, de modo que podrías hacer "some_string".decode('html_entities') ¡pero desafortunadamente no es así!)

EDITAR:Otra solución:El desarrollador de Python Fredrik Lundh (autor de elementtree, entre otras cosas) ha una función para desbloquear entidades HTML en su sitio web, que funciona con entidades decimales, hexadecimales y con nombre (BeautifulSoup no funcionará con las hexadecimales).

Otros consejos

Intenta usar hermosasopa.Debería funcionar y brindarte un DOM bien formateado para trabajar también.

este blog La entrada parece haber tenido cierto éxito.

No lo he probado yo mismo, pero ¿lo has probado tú?

http://zesty.ca/python/scrape.html ?

Parece tener un método htmldecode(text) que haría lo que quieras.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top