parser from example python parsing beautifulsoup lxml

from - install beautifulsoup python 3



Método del código fuente de análisis(Python): Beautiful Soup, lxml, html5lib difference? (1)

Tengo un gran código fuente HTML que me gustaría analizar (~ 200,000) líneas, y estoy bastante seguro de que hay un formato pobre en todo. He estado investigando algunos analizadores, y parece que Beautiful Soup, lxml, html5lib son los más populares. Al leer este sitio web, parece que lxml es el más utilizado y el más rápido, mientras que Beautiful Soup es más lento, pero representa más errores y variaciones.

Estoy un poco confundido en la documentación de Beautiful Soup, http://www.crummy.com/software/BeautifulSoup/bs4/doc/ , y comandos como BeautifulSoup (marcado, "lxml") o BeautifulSoup (marcado, html5lib). En tales casos, ¿está utilizando Beautiful Soup y html5lib / lxml? La velocidad no es realmente un problema aquí, pero la precisión sí lo es. El objetivo final es analizar el código fuente usando urllib2, y recuperar todos los datos de texto del archivo como si solo fuera a copiar / pegar la página web.

PD: ¿Hay alguna forma de analizar el archivo sin devolver espacios en blanco que no estaban presentes en la vista de la página web?


Según tengo entendido (habiendo usado BeautifulSoup para un puñado de cosas) es que es un contenedor para analizadores sintácticos como lxml o html5lib. Utilizando el analizador que se especifique (creo que el valor predeterminado es HTMLParser, el analizador predeterminado para python), BeautifulSoup crea un árbol de elementos de etiquetas y hace que sea bastante fácil navegar y buscar el HTML para obtener datos útiles dentro de las etiquetas. Si realmente solo necesita el texto de las páginas web y no datos más específicos de etiquetas HTML específicas, es posible que solo necesite un fragmento de código similar al siguiente:

from bs4 import BeautifulSoup import urllib2 soup = BeautifulSoup(urllib2.urlopen("http://www.google.com") soup.get_text()

get_text no es tan bueno con páginas web complejas (recibe ocasionalmente javascript o css ocasionalmente), pero si conoces cómo usar BeautifulSoup, no debería ser difícil obtener solo el texto que deseas.

Para sus propósitos, parece que no necesita preocuparse por utilizar uno de esos otros analizadores para usar con BeautifulSoup (html5lib o lxml). BeautifulSoup puede lidiar con algunos descuidos por sí mismo, y si no puede, dará un error obvio sobre "HTML mal formado" o algo por el estilo, y eso sería una indicación para instalar html5lib o lxml.