Tutorial de Python Beautifulsoup para principiantes

Tutorial de Python Beautifulsoup para principiantes
El raspado web es de gran importancia en el mundo de hoy. Todos necesitan datos, de diferentes fuentes, incluidas las páginas web. En este artículo, veremos cómo analizar HTML con la biblioteca BeautifulSoup. Extraer los datos necesarios de un montón de alfabetos y símbolos, gracias a esta gran biblioteca, se ha vuelto mucho más fácil. BeautifulSoup escrito en Python se puede instalar fácilmente en su máquina utilizando la herramienta de instalación de PIP de Python. El siguiente comando ayudaría a instalar la biblioteca:
PIP install beautifulSoup4

Para verificar si la instalación fue exitosa, active el shell interactivo de Python e importe beautifulsoup. Si no aparece ningún error, significa que todo salió bien. Si no sabe cómo hacerlo, escriba los siguientes comandos en su terminal.

$ Python
Python 3.5.2 (predeterminado, 14 de septiembre de 2017, 22:51:06)
[GCC 5.4.0 20160609] en Linux
Escriba "Ayuda", "Copyright", "Créditos" o "Licencia" para obtener más información.
>>> importar BS4

Para trabajar con la biblioteca BeautifulSoup, debes pasar en HTML. Al trabajar con sitios web reales, puede obtener el HTML de una página web utilizando la biblioteca de solicitudes. La instalación y el uso de la biblioteca de solicitudes está más allá del alcance de este artículo, sin embargo, puede encontrar su camino alrededor de la documentación, es bastante fácil de usar. Para este artículo, simplemente usaremos HTML en una cadena de Python que estaríamos llamando html.

html = "" "

Perfil de empleado



Nombre:Dr. Peter Parker
Trabajo:Ingeniero de aprendizaje automático
Teléfono:+12345678910
Correo electrónico:
[email protected]

Sitio web:
pParkerworks.comunicarse



"" "

Para usar BeautifulSoup, lo importamos al código utilizando el siguiente código:

de bs4 import beautifulsoup

Esto introduciría BeautifulSoup en nuestro espacio de nombres y podemos usarlo para analizar nuestra cadena.

sopa = beautifulSoup (html, "lxml")

Ahora, sopa es un objeto de tipo beautiful de tipo BS4.Beautifulsoup y podemos realizar todas las operaciones de BeautifulSoup en el sopavariable.

Echemos un vistazo a algunas cosas que podemos hacer con Beautifulsoup ahora.

Haciendo lo feo, hermoso

Cuando BeautifulSoup analiza HTML, no suele ser en los mejores formatos. El espacio es bastante horrible. Las etiquetas son difíciles de encontrar. Aquí hay una imagen para mostrar cómo se verían cuando puedas imprimir el sopa:

Sin embargo, hay una solución a esto. La solución le da al HTML el espacio perfecto, haciendo que las cosas se vean bien. Esta solución se llama merecidamente "embellecer".

Es cierto que no puede usar esta función la mayor parte del tiempo; Sin embargo, hay momentos en los que no tiene acceso a la herramienta Inspect Element de un navegador web. En aquellos tiempos de recursos limitados, encontrará muy útil el método de Prettify.

Así es como lo usas:

sopa.embellecer()

El marcado se vería correctamente espaciado, al igual que en la imagen a continuación:

Cuando aplica el método de Prettify en la sopa, el resultado ya no es un tipo BS4.Beautifulsoup. El resultado ahora es tipo 'unicode'. Esto significa que no puede aplicar otros métodos hermosos, sin embargo, la sopa en sí no se ve afectada, por lo que estamos a salvo.

Encontrar nuestras etiquetas favoritas

HTML está formado por etiquetas. Almacena todos sus datos en ellos, y en medio de todo ese desorden se encuentra los datos que necesitamos. Básicamente, esto significa que cuando encontramos las etiquetas correctas, podemos obtener lo que necesitamos.

Entonces, ¿cómo encontramos las etiquetas correctas?? Hacemos uso de los métodos Find and Find_all.

Así es como funcionan:

El encontrar El método busca la primera etiqueta con el nombre necesario y devuelve un objeto de tipo BS4.elemento.Etiqueta.

El encuentra todos Método Por otro lado, busca todas las etiquetas con el nombre de la etiqueta necesario y las devuelve como una lista del tipo BS4.elemento.Conjunto resultante. Todos los elementos de la lista son de tipo BS4.elemento.Etiqueta, para que podamos llevar a cabo la indexación en la lista y continuar nuestra exploración de beautifulsoup.

Veamos algún código. Encontremos todas las etiquetas Div:

sopa.encontrar ("div")

Obtendríamos el siguiente resultado:

Nombre:Dr. Peter Parker

Comprobando la variable HTML, notaría que esta es la primera etiqueta Div.

sopa.find_all ("div")

Obtendríamos el siguiente resultado:

[
Nombre:Dr. Peter Parker,
Trabajo:Ingeniero de aprendizaje automático,
Teléfono:+12345678910,
Correo electrónico:
[email protected]
,
Sitio web:
pParkerworks.comunicarse
]

Devuelve una lista. Si, por ejemplo, desea la tercera etiqueta DIV, ejecuta el siguiente código:

sopa.find_all ("div") [2]

Devolvería lo siguiente:

Teléfono:+12345678910

Encontrar los atributos de nuestras etiquetas favoritas

Ahora que hemos visto cómo obtener nuestras etiquetas favoritas, ¿qué tal obtener sus atributos??

Puede estar pensando en este punto: “¿Para qué necesitamos atributos??". Bueno, muchas veces, la mayoría de los datos que necesitamos serán direcciones de correo electrónico y sitios web. Este tipo de datos generalmente se hiperlinde en páginas web, con los enlaces en el atributo "HREF".

Cuando hemos extraído la etiqueta necesaria, utilizando los métodos Find o Find_all, podemos obtener atributos aplicando atacantes. Esto devolvería un diccionario del atributo y su valor.

Para obtener el atributo de correo electrónico, por ejemplo, obtenemos las etiquetas que rodean la información necesaria y hacemos lo siguiente.

sopa.find_all ("A") [0].atacantes

Que devolvería el siguiente resultado:

'href': 'mailto: [email protected] '

Lo mismo para el atributo del sitio web.

sopa.find_all ("A") [1].atacantes

Que devolvería el siguiente resultado:

'href': 'http: // pParkerworks.com '

Los valores devueltos son diccionarios y la sintaxis del diccionario normal se puede aplicar para obtener las claves y los valores.

Veamos a los padres e hijos

Hay etiquetas en todas partes. A veces, queremos saber cuáles son las etiquetas de los niños y cuál es la etiqueta principal.

Si aún no sabe qué es una etiqueta de padre e hijos, esta breve explicación debería ser suficiente: una etiqueta principal es la etiqueta exterior inmediata y un niño es la etiqueta interna inmediata de la etiqueta en cuestión.

Echando un vistazo a nuestro HTML, la etiqueta del cuerpo es la etiqueta principal de todas las etiquetas Div. Además, la etiqueta en negrita y la etiqueta de anclaje son los hijos de las etiquetas Div, donde aplicables como no todas las etiquetas Div poseen etiquetas de anclaje.

Para que podamos acceder a la etiqueta principal llamando al Find Parent método.

sopa.encontrar ("div").findparent ()

Esto devolvería toda la etiqueta del cuerpo:


Nombre:Dr. Peter Parker
Trabajo:Ingeniero de aprendizaje automático
Teléfono:+12345678910
Correo electrónico:
[email protected]

Sitio web:
pParkerworks.comunicarse

Para obtener la etiqueta de los niños de la cuarta etiqueta div, llamamos al Findigherren método:

sopa.find_all ("div") [4].FindChildren ()

Devuelve lo siguiente:

[Sitio web:, pParkerworks.comunicarse]

¿Qué hay para nosotros??

Al navegar por páginas web, no vemos etiquetas en todas partes en la pantalla. Todo lo que vemos es el contenido de las diferentes etiquetas. ¿Qué pasa si queremos el contenido de una etiqueta, sin todos los?? Eso no es difícil, todo lo que haríamos es llamar get_text Método en la etiqueta de elección y obtenemos el texto en la etiqueta y si la etiqueta tiene otras etiquetas, también obtiene sus valores de texto.

Aquí hay un ejemplo:

sopa.encontrar ("cuerpo").get_text ()

Esto devuelve todos los valores de texto en la etiqueta del cuerpo:

Nombre: Dr. Peter Parker
Trabajo: ingeniero de aprendizaje automático
Teléfono: +12345678910
Correo electrónico: [email protected]
Sitio web: PParkerworks.comunicarse

CONCLUSIÓN

Eso es lo que tenemos para este artículo. Sin embargo, todavía hay otras cosas interesantes que se pueden hacer con Beautifulsoup. Puede consultar la documentación o usar dir (beautfulsoup) en el shell interactivo para ver la lista de operaciones que se pueden llevar a cabo en un objeto beautifulsoup. Eso es todo de mi hoy, hasta que vuelva a escribir.