pip install lxml // pip install bs4 // html5lib

SCRIPT PARA EXTRAER EQUIPOS DE LA CLASIFICACIÓN DE FUTBOL

Vamos a crear un bot que extraiga todos los equipos de esta web:

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:

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)
	

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:

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:

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: