Porque las expresiones regulares me asusta, estoy tratando de encontrar una manera de eliminar todas las etiquetas HTML y resolver las entidades HTML de una cadena en Python.

  • En realidad, el vínculo a la Inmersión En Python debería ser este
InformationsquelleAutor akraut | 2008-09-01

8 Comentarios

  1. 40

    Uso lxml que es la mejor xml/html biblioteca de python.

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

    Y si sólo quieres desinfectar el html mirar el lxml.html.limpia módulo

  2. 16

    Uso BeautifulSoup! Es perfecto para este, donde se han marcado entrante de dudosa virtud y la necesidad de conseguir algo razonable fuera de él. Acaba de pasar en el texto original, extracto de toda la cadena de etiquetas, y unirse a ellos.

    • y el código para hacer que sería: «.join(BeautifulSoup(valor, convertEntities=BeautifulSoup.HTML_ENTITIES).findAll(texto=True))
  3. 6

    Aunque estoy de acuerdo con Lucas que las expresiones regulares no son todos los que de miedo, todavía creo que usted debe ir con un especializado analizador de HTML. Esto es debido a que el estándar HTML es peluda suficiente (especialmente si desea analizar de forma arbitraria «HTML» páginas tomadas de Internet) que usted tendrá que escribir un montón de código para manejar los casos de esquina. Parece que python incluye un fuera de la caja.

    También debe comprobar fuera de la enlaces python para TidyLib que puede limpiar HTML roto, haciendo que la tasa de éxito de cualquier análisis de HTML mucho más alto.

  4. 1

    Usted puede ser que necesite algo más complicada que la de una expresión regular. Las páginas Web suelen tener el ángulo de los soportes que no son parte de una etiqueta como esta:

     <div>5 < 7</div>

    Pelar las etiquetas con regex devolverá la cadena «5» y tratar

     < 7</div>

    como una sola etiqueta y tira de él hacia fuera.

    Sugiero buscando ya el código que hace esto para usted. Hice una búsqueda y encontré este: http://zesty.ca/python/scrape.html también Se puede resolver a entidades HTML.

  5. 0

    Las expresiones regulares no son de miedo, pero la escritura de sus propias expresiones regulares a la franja de HTML es un camino seguro a la locura (y no funciona, tampoco). Siga el camino de la sabiduría, y el uso de uno de los muchos buenos HTML-análisis de bibliotecas.

    Lucas ejemplo también está roto porque «sub» no es un método de una cadena Python. Usted tendría que importar «re», a continuación, volver a llamar.sub(patrón, repl, cadena). Pero ni aquí ni allí, como la respuesta correcta a su pregunta no implica la escritura de cualquier expresiones regulares.

  6. 0

    La cantidad de sentido de las personas que están demostrando en otras respuestas aquí, yo diría que el uso de una expresión regular que probablemente no es la mejor idea para su situación. Ir a por algo probado, y tratar mi respuesta anterior como una demostración de que las expresiones regulares no necesita ser que de miedo.

Dejar respuesta

Please enter your comment!
Please enter your name here