pip install lxml // pip install bs4 // html5lib {{pasted_image_20221217090221.png|}} {{pasted_image_20221217090235.png|}} {{pasted_image_20221217090241.png|}} {{pasted_image_20221217090246.png|}} {{pasted_image_20221217090257.png|}} {{pasted_image_20221217090314.png|}} ===== SCRIPT PARA EXTRAER EQUIPOS DE LA CLASIFICACIÓN DE FUTBOL ===== Vamos a crear un bot que extraiga todos los equipos de esta web: {{pasted_image_20230117213029.png|}} Por tanto en Python lo haríamos de esta forma: from bs4 import BeautifulSoup website = "https://resultados.as.com/resultados/futbol/primera/clasificacion/" result = requests.get(website) content = result.text soup = BeautifulSoup(content, "html5lib") print(soup.prettify()) equipos = soup.find_all('span', class_= "nombre-equipo") # Aquí filtramos solo los párrafos. print(equipos) Y este sería el resultado: {{pasted_image_20230117213830.png|}} ===== WEB SCRAPING WEB DE VULNHUB ===== Vamos a crear un script que haga scraping a la web de vulnhub y me saque sólamente los nombres de cada máquina: import requests import re website = "https://www.vulnhub.com/" result = requests.get(website) content = result.text patron = r"/entry/[\w-]+" maquinas = re.findall(patron, str(content)) for i in maquinas: nombre_articulo = i.replace("/entry/", "") print(nombre_articulo) {{pasted_image_20230201040813.png|}} No obstante, si queremos eliminar elementos repetidos dentro de una lista de python utilizaremos import requests import re website = "https://www.vulnhub.com/" result = requests.get(website) content = result.text patron = r"/entry/[\w-]+" maquinas_repetidas = re.findall(patron, str(content)) sin_duplicados = list(set(maquinas_repetidas)) # Quitamos máquinas repetidas. for i in sin_duplicados: nombre_maquinas = i.replace("/entry/", "") print(nombre_maquinas) Y ahora ya no tendremos máquinas repetidas: {{pasted_image_20230202124431.png|}} Incluso podemos añadir y comprobador para ver si hay máquinas nuevas dentro de la plataforma vulnhub, evaluando si la máquina noob ha pasado a la segunda página o no; y en función de ello comprobamos si hay máquinas nuevas o no: import requests import re website = "https://www.vulnhub.com/" result = requests.get(website) content = result.text patron = r"/entry/[\w-]+" maquinas_repetidas = re.findall(patron, str(content)) sin_duplicados = list(set(maquinas_repetidas)) maquinas_final = [] for i in sin_duplicados: nombre_maquinas = i.replace("/entry/", "") maquinas_final.append(nombre_maquinas) print(nombre_maquinas) # Comprobar si la máquina noob sigue estando y así sabemos si hay máquinas nuevas o no: maquina_noob = "noob-1" existe_noob = False for a in maquinas_final: if a == maquina_noob: existe_noob = True break if existe_noob: print("No hay máquinas nuevas") else: print("Hay máquinas nuevas!!!!") Y este sería el resultado: {{pasted_image_20230202131225.png|}} Y ahora por último le vamos a añadir colores dentro de las sentencias condicionales: import requests import re from colorama import Fore website = "https://www.vulnhub.com/" result = requests.get(website) content = result.text patron = r"/entry/[\w-]+" maquinas_repetidas = re.findall(patron, str(content)) sin_duplicados = list(set(maquinas_repetidas)) maquinas_final = [] for i in sin_duplicados: nombre_maquinas = i.replace("/entry/", "") maquinas_final.append(nombre_maquinas) print(nombre_maquinas) # Comprobar si la máquina noob sigue estando y así sabemos si hay máquinas nuevas o no: maquina_noob = "noob-1" existe_noob = False for a in maquinas_final: if a == maquina_noob: existe_noob = True break color_rojo = Fore.RED color_verde = Fore.GREEN if existe_noob: print(color_verde + "No hay máquinas nuevas") else: print(color_rojo + "Hay máquinas nuevas!!!!") Y así se vería: {{pasted_image_20230202131852.png|}}