2010-03-24 18 views
17

Soy completamente nuevo en Python y estoy usando Python 3.1 en Windows (pywin). Necesito analizar algo de HTML, a valores esencialmente extra entre etiquetas HTML específicas y estoy confundido en mi conjunto de opciones, y todo lo que encuentro es adecuado para Python 2.x. He leído críticas sobre Beautiful Soup, HTML5Lib y lxml, pero no puedo encontrar la manera de instalar ninguno de estos en Windows.¿La mejor biblioteca para analizar HTML con Python 3 y ejemplo?

Preguntas:

  1. Lo analizador HTML recomienda?
  2. ¿Cómo lo instalo? (Sé amable, soy completamente nuevo en Python y recuerdo que estoy en Windows)
  3. Tienes un ejemplo simple sobre cómo usar la biblioteca recomendada para enganchar HTML de una URL específica y devolver el valor de say algo como esto:

    < div class = "foo" > <mesa> <tr> <td> foo </td > </tr > </table > < a class = "link" href = "/ blahblah '> Enlace </a > </div >

(digamos que quieren volver "/ blahblah")

Respuesta

5

Actualmente, el raspado web en Python 3 es muy poco compatible; todas las bibliotecas dignas de trabajo sólo con Python 2. Si debe raspadura web en Python, usar Python 2.

Aunque Beautiful Soup se recomienda frecuentemente (cada pregunta con respecto web raspado con Python en desbordamiento de pila se sugiere), no es tan bueno para Python 3 como para Python 2; Ni siquiera pude instalarlo ya que el código de instalación todavía era Python 2.

En cuanto a las soluciones adecuadas y fáciles de instalar para Python 3, puedes probar the library's HTML parser, aunque bastante barebones, viene con Python 3.

+1

¿Alguna idea de cómo usar el analizador HTML integrado para obtener el contenido de las etiquetas? – Teifion

+1

Beautiful Soup tiene una buena redacción en su estado actual. http://www.crummy.com/software/BeautifulSoup/3.1-problems.html – dyork

6

Si su HTML está bien formado, tiene muchas opciones, como sax y dom. Si no está bien formado, necesita un analizador sintáctico tolerante a errores como Beautiful soup, element tidy o lxml analizador HTML. Ningún analizador es perfecto, cuando se presenta con una variedad de HTML roto, a veces tengo que probar más de uno. Lxml y Elementree usan una API mayoritariamente compatible que es más estándar que Beautiful soup.

En mi opinión, lxml es el mejor módulo para trabajar con documentos xml, pero el ElementTree incluido con python sigue siendo bastante bueno. En el pasado he usado Beautiful soup para convertir HTML a xml y construyo ElementTree para procesar los datos.

Cuestiones relacionadas