soup

Llego el momento de ver código y como implementar lo que vimos, como ya instalamos las dos librerías al principio del nivel solo tenemos que importarlas con los siguientes códigos:

import requests

from bs4 import BeautifulSoup

Procedamos primero utilizar la función:

requests

Esta función se utiliza para coger todo el código de la página web y guardarlo en un objeto, es decir si la página web cambia de dominio o nombre es necesario modificar esta función, teniendo todo el código lo filtraremos con otra librería, la sintaxis para esta función es:

Nombre_del_objeto = requests.get (“URL_de_la_web”)

En estos casos yo siempre creo un objeto llamado “web” así es más intuitivo el código:

web = requests.get(«https://mp3teca.com/»)

Ya tenemos la llamada a la web pero para obtener el texto de forma legible necesitamos la función:

BeautifulSoup

Para ejecutar copiamos este código literal, solo modificamos el nombre del objeto en caso de haberlo creado con otro nombre:

soup = BeautifulSoup (web.text, «html.parser»)

Con esto completo, solo falta buscar en la categorías, subgrupo y descripción que vimos en el html, para obtener los tres campos creo tres objetos con estos códigos:

artista =soup.find_all(«span»,  attrs={«id» : «artista»})

titulo = soup.find_all(«span», attrs={«id» : «titulo»})

fecha=soup.find_all(«span», attrs={«id» : «views»})

Observad como indicamos los campos del código html en las partes entrecomilladas, los objetos creados se han convertido en vectores debido a que ahora tienen varias posiciones con todas la entradas de la web, con esto voy a ejecutar un script completo incluyendo un “print” para que observéis el resultado:

import requests

from bs4 import BeautifulSoup

web=requests.get(«https://mp3teca.com/»)

soup=BeautifulSoup(web.text, «html.parser»)

artista=soup.find_all(«span», attrs={«id»:»artista»})

titulo=soup.find_all(«span», attrs={«id»:»titulo»})

fecha=soup.find_all(«span», attrs={«id»:»views»})

x=len(artista)

for i in range (0,x):

print((i+1),»-«,artista[i].text)

print(«\t»,titulo[i].text)

print(«\t»,fecha[i].text)

print(«»)

AlainSQ

CUIDADO con la función print, si queréis mostrar por consola tenéis que hacerlo como se muestra, con la función (.text), también podéis ejecutar la función y guardar los datos de nuevo en el array, se tarda más pero puede ser útil si el código es largo y ejecutáis varios “print” o comparaciones.

Como veis acabo de obtener un listado sin ninguna base de datos ni nada, esto es uno de los principios del famoso Big data, la diferencia es que aquí no manipulamos los datos, solo los utilizamos para guardarlos o mostrarlos, si fueran los valores bursátiles del día de hoy y gestionarais envíos de mail o avisos en pantalla en función de los valores, se podría decir que estaría más cerca del Big data.