una scraping pagina leer extraer espaƱol datos python html

scraping - leer pagina web python



Filtra etiquetas HTML y resuelve entidades en python (8)

¿Qué hay de analizar los datos HTML y extraer los datos con la ayuda del analizador?

Intentaré algo como el autor descrito en el capítulo 8.3 en el libro Dive Into Python

Debido a que las expresiones regulares me asustan, estoy tratando de encontrar una forma de eliminar todas las etiquetas HTML y resolver entidades HTML a partir de una cadena en Python.


¡Usa BeautifulSoup ! Es perfecto para esto, donde tienes un marcado entrante de dudosa virtud y necesitas obtener algo razonable de ello. Solo pase el texto original, extraiga todas las etiquetas de cadena y únase a ellas.


Aunque estoy de acuerdo con Lucas en que las expresiones regulares no son tan aterradoras, sigo creyendo que deberías ir con un analizador HTML especializado. Esto se debe a que el estándar de HTML es lo suficientemente complicado (especialmente si desea analizar arbitrariamente páginas "HTML" extraídas de Internet) que necesitaría escribir mucho código para manejar los casos de esquina. Parece que Python incluye uno fuera de la caja .

También debería verificar los enlaces de python para TidyLib, que pueden limpiar el código HTML roto, haciendo que la tasa de éxito de cualquier análisis HTML sea mucho mayor.


Es posible que necesite algo más complicado que una expresión regular. Las páginas web a menudo tienen corchetes angulares que no forman parte de una etiqueta, como este:

<div>5 < 7</div>

Pelar las etiquetas con expresiones regulares devolverá la cadena "5" y tratará

< 7</div>

como una sola etiqueta y destrúyelo.

Sugiero que busque un código ya escrito que lo haga por usted. Hice una búsqueda y encontré esto: http://zesty.ca/python/scrape.html También puede resolver entidades HTML.


Las expresiones regulares no dan miedo, pero escribir tus propias expresiones regulares para eliminar HTML es un camino seguro hacia la locura (y tampoco funcionará). Siga el camino de la sabiduría y use una de las muchas buenas bibliotecas de análisis de HTML.

El ejemplo de Lucas también se rompe porque "sub" no es un método de una cadena de Python. Tendría que "importar re", luego llamar a re.sub (patrón, repl, cadena). Pero eso no es ni aquí ni allá, ya que la respuesta correcta a su pregunta no implica escribir expresiones regulares.


Al observar la cantidad de sentido que la gente está demostrando en otras respuestas aquí, diría que usar una expresión regular probablemente no sea la mejor idea para su situación. Busque algo probado y trate mi respuesta anterior como una demostración de que las expresiones regulares no tienen por qué ser tan aterradoras.



Use lxml, que es la mejor biblioteca xml / html para Python.

import lxml.html t = lxml.html.fromstring("...") t.text_content()

Y si solo desea desinfectar el html, mire el módulo lxml.html.clean