9.2.3 Acceder al contenido

9.2.3 Acceder al contenido

Simplificando, podríamos decir que cada elemento de la famosa «sopa» de Beautiful Soup puede ser un bs4.element.Tag o un «string».

Para el caso de los «tags» existe la posibilidad de acceder a su contenido, al nombre del elemento o a sus atributos.

Nombre de etiqueta

Podemos conocer el nombre de la etiqueta de un elemento usando el atributo name:

9.2.3 Acceder al contenido
Truco: Es posible modificar el nombre de una etiqueta con una simple asignación.

Acceso a atributos

Los atributos de un elemento están disponibles como claves de un diccionario:

9.2.3 Acceder al contenido

Exite una forma de acceder al diccionario completo de atributos:

9.2.3 Acceder al contenido

Truco: Es posible modificar el valor de un atributo con una simple asignación.

Contenido textual

Es necesario aclarar las distintas opciones que proporciona Beautiful Soup para acceder al contenido textual de los elementos del DOM.

9.2.3 Acceder al contenido
Ejemplos:

9.2.3 Acceder al contenido

Mostrando elementos

Cualquier elemento del DOM que seleccionemos mediante este paquete se representa con el código HTML que contiene. Por ejemplo:

9.2.3 Acceder al contenido

Existe la posibilidad de mostrar el código HTML en formato «mejorado» a través de la función prettify():

9.2.3 Acceder al contenido

9.2.4 Navegar por el DOM

Además de localizar elementos, este paquete permite moverse por los elementos del DOM de manera muy sencilla.

Moverse hacia abajo

Para ir profundizando en el DOM podemos utilizar los nombres de los «tags» como atributos del objeto, teniendo en cuenta que si existen múltiples elementos sólo se accederá al primero de ellos:

9.2.3 Acceder al contenido

Existe la opción de obtener el contenido (como lista) de un determinado elemento:

9.2.3 Acceder al contenido

Advertencia: En la lista que devuelve contents hay mezcla de «strings» y objetos bs4.element.Tag.

Si no se quiere explicitar el contenido de un elemento como lista, también es posible usar un generador para acceder al mismo de forma secuencial:

9.2.3 Acceder al contenido

El atributo contents sólo tiene en cuenta descendientes directos. Si queremos acceder a cualquier elemento descendiente (de manera recursiva) tenemos que usar descendants:
9.2.3 Acceder al contenido

9.2.3 Acceder al contenido

Importante: Tener en cuenta que descendants es un generador que devuelve un iterable.

Moverse hacia arriba

Para acceder al elemento superior de otro dado, podemos usar el atributo parent:

9.2.3 Acceder al contenido

También podemos acceder a todos los elementos superiores (ascendientes) usando el generador parents:

9.2.3 Acceder al contenido

Otros movimientos

En la siguiente tabla se recogen el resto de atributos que nos permiten movernos a partir de un elemento del DOM:

9.2.3 Acceder al contenido

Advertencia: Con estos accesos también se devuelven los saltos de línea \n como elementos válidos. Si se quieren evitar, es preferible usar las funciones definidas aquí .

Ejercicio

Escriba un programa en Python que obtenga de https://pypi.org datos estructurados de los «Trending projects» y los muestre por pantalla utilizando el siguiente formato:

<nombre-del-paquete>,<versión>,<descripción>,<url>

Se recomienda usar el paquete requests para obtener el código fuente de la página. Hay que tener en cuenta que el listado de paquetes cambia cada pocos segundos, a efectos de comprobación.

Publicaciones Similares