Hermosa Sopa

Tutorial de Python BeautifulSoup para principiantes

Tutorial de Python BeautifulSoup para principiantes
El web scraping es de gran importancia en el mundo actual. Todo el mundo necesita 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 usando la herramienta de instalación pip de Python. El siguiente comando ayudaría a instalar la biblioteca:

pip instalar 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)
[CCG 5.4.0 20160609] en Linux
Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.
>>> importar bs4

Para trabajar con la biblioteca BeautifulSoup, debe pasar 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án más allá del alcance de este artículo, sin embargo, puede encontrar su camino en la documentación, es bastante fácil de usar. Para este artículo, simplemente usaremos html en una cadena de Python a la que llamaríamos html.

html = "" "

Perfil de empleado



Nombre:Dr. Peter Parker

Trabajo:Ingeniero de aprendizaje automático

Teléfono:+12345678910





"" "

Para usar beautifulsoup, lo importamos al código usando el siguiente código:

desde bs4 importar BeautifulSoup

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

soup = BeautifulSoup (html, "lxml")

Ahora, sopa es un objeto BeautifulSoup de tipo bs4.BeautifulSoup y podemos llegar a 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 estar en el mejor de los formatos. El espaciado es bastante horrible. Las etiquetas son difíciles de encontrar. Aquí hay una imagen para mostrar cómo se verían cuando imprima el sopa:

Sin embargo, hay una solución para 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 es posible que no pueda utilizar esta función la mayor parte del tiempo; Sin embargo, hay ocasiones en las que es posible que no tenga acceso a la herramienta de inspección de elementos de un navegador web. En esos tiempos de recursos limitados, el método de embellecimiento le resultará muy útil.

Así es como se usa:

sopa.embellecer()

El marcado se vería correctamente espaciado, como en la siguiente imagen:

Cuando aplica el método de embellecimiento en la sopa, el resultado ya no es un tipo bs4.Hermosa Sopa. El resultado ahora es tipo 'unicode'. Esto significa que no puede aplicar otros métodos de BeautifulSoup en él, sin embargo, la sopa en sí no se ve afectada, por lo que estamos seguros.

ENCONTRAR NUESTRAS ETIQUETAS FAVORITAS

HTML se compone de etiquetas. Almacena todos sus datos en ellos, y en medio de todo ese desorden se encuentran 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 adecuadas?? Hacemos uso de los métodos find y find_all de BeautifulSoup.

Así es como funcionan:

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

La encuentra todos Por otro lado, el método busca todas las etiquetas con el nombre de etiqueta necesario y las devuelve como una lista de tipo bs4.elemento.Conjunto resultante. Todos los elementos de la lista son de tipo bs4.elemento.Tag, para que podamos realizar la indexación en la lista y continuar con nuestra hermosa exploración de sopas.

Veamos un código. Busquemos todas las etiquetas div:

sopa.buscar ("div")

Obtendríamos el siguiente resultado:

Nombre:Dr. Peter Parker

Al verificar la variable html, notará 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
,
,
]

Devuelve una lista.  Si, por ejemplo, desea la tercera etiqueta div, ejecute 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 si obtenemos sus atributos??

Quizás esté pensando en este punto: "¿Para qué necesitamos atributos para?". 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 suele estar hipervinculado 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 attrs. Esto devolvería un diccionario del atributo y su valor.

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

sopa.buscar_todos ("a") [0].attrs

Lo que devolvería el siguiente resultado:

'href': 'mailto: [correo electrónico protegido]'

Lo mismo para el atributo de sitio web.

sopa.find_all ("a") [1].attrs

Lo que devolvería el siguiente resultado:

'href': '
http: // pparkerworks.com'

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

VAMOS A LOS PADRES Y A LOS HIJOS

Hay etiquetas por todas partes. A veces, queremos saber qué son las etiquetas secundarias y cuál es la etiqueta principal.

Si aún no sabe qué es una etiqueta principal y secundaria, esta breve explicación debería ser suficiente: una etiqueta principal es la etiqueta externa inmediata y una etiqueta secundaria 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, cuando corresponda, ya que no todas las etiquetas div poseen etiquetas de anclaje.

Entonces podemos acceder a la etiqueta principal llamando al findParent método.

sopa.buscar ("div").findParent ()

Esto devolvería toda la etiqueta del cuerpo:


Nombre:Dr. Peter Parker

Trabajo:Ingeniero de aprendizaje automático

Teléfono:+12345678910



Para obtener la etiqueta secundaria de la cuarta etiqueta div, llamamos a la findChildren método:

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

Devuelve lo siguiente:

[Sitio web:, pparkerworks.com]

¿Qué hay para nosotros??

Al navegar por páginas web, no vemos etiquetas en todas partes de 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 corchetes angulares que hacen la vida incómoda?? 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.

He aquí 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: [correo electrónico protegido]
Sitio web: pparkerworks.com

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 utilizar dir (BeautfulSoup) en el shell interactivo para ver la lista de operaciones que se pueden realizar en un objeto BeautifulSoup. Eso es todo de mi parte hoy, hasta que vuelva a escribir.

Cómo cambiar los botones izquierdo y derecho del mouse en una PC con Windows 10
Es una norma que todos los dispositivos de mouse de computadora estén diseñados ergonómicamente para usuarios diestros. Pero hay dispositivos de mouse...
Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...