Proyecto de Web Scraping

Automatización de recolección de datos con Selenium y Requests

Este proyecto integra diferentes aproximaciones de Web Scraping utilizando librerías como Selenium y BeautifulSoup, así como herramientas auxiliares como webdriver_manager. Con ello se busca extraer datos de diversas páginas web de manera automática y programática.

A continuación, se muestran algunos fragmentos de código donde se aplican buenas prácticas, como limpieza de texto, manejo de precios y scroll dinámico en sitios con contenido que se carga de forma parcial.

Ejemplo de Web Scraping

Usar Selenium permite automatizar un navegador real para hacer login, resolver pantallas intermedias y realizar clics. De esta manera se pueden extraer datos de páginas que renderizan elementos de forma asíncrona y no se limitan únicamente a HTML estático.

1. Clase Web_driver() y funciones auxiliares

Este fragmento de código inicializa un navegador Chrome, define la función get_gender() para determinar el género del producto a partir de la URL, así como métodos de limpieza de textos y precios:


class Web_driver():
    def __init__(self):
        options = webdriver.ChromeOptions()
        options.add_experimental_option('excludeSwitches', ['enable-logging'])
        self.driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)

    def get_gender(self, pag):
        # ... definición de lógica para 'hombre' | 'mujer' ...

    def arreglar_texto(self, texto_in):
        # ... elimina espacios y caracteres especiales ...

    def arreglar_moneda(self, valor_in):
        # ... limpieza de valores monetarios ...

    def actualizar_altura(self, x_path):
        # ... desplaza el scroll hasta la altura de un elemento ...

2. Scraping completo de productos

En la función true() se define el proceso de scrolling, recolección de URLs, productos (nombre, precio, imagen) y finalmente la creación de un DataFrame para almacenar los resultados:


def true(self):
    print('=============True Scraping==============')
    # Definición de las páginas a usar
    url = ['https://trueshop.co/pages/hombre','https://trueshop.co/pages/mujer']
    # ...
    lista_diccionarios = []
    for pagina in paginas_completo:
        self.driver.get(pagina)
        # ...
        while True:
            # scroll + extracción de items
            # ...
            lista_diccionarios.append({
                'fecha': date.today(),
                'foto': foto,
                'item': foto,
                'posición': posicion,
                'marca': "True",
                'pag': pagina,
                'nombre': nombre,
                'precio': precio_visible,
                'precio descuento': precio_antiguo,
                'categoria': categoria,
                'genero': genero_item,
                'link': link
            })
            # ...
    return pd.DataFrame(lista_diccionarios)

De este modo se construye un dataframe que posteriormente puede ser exportado a formatos como CSV o Excel, facilitando el análisis posterior.

También se incluyen ejemplos de automatización de login en servicios de streaming: Prime Video y Star+, para simular usuario, contraseña, y extraer información de series, episodios y enlaces directos.

Scraping de servicios de streaming

3. Automatización de login (Prime Video)

El siguiente ejemplo utiliza Selenium para:

  • Navegar a la página de primevideo.com.
  • Rellenar credenciales.
  • Ingresar el término de búsqueda.
  • Almacenar enlaces de cada episodio.

driver = webdriver.Chrome()
driver.get("https://www.primevideo.com/")

# Hacer clic en el botón "login"
login_button = driver.find_element(By.XPATH, './/a[@class="dv-copy-button"]')
login_button.click()

# Ingresar email
email_field = driver.find_element(By.XPATH, './/input[@type="email"]')
email_field.send_keys(user_name)

# ...

4. Automatización de login (Star+)

Similarmente, para Star+ se requiere manejar pantallas intermedias (botones de "Continuar", elección de perfil, etc.). Aquí se ilustra la secuencia de pasos:


driver = webdriver.Chrome()
driver.get("https://www.starplus.com")

# ...
path = './/a[@href="/login"]'
login_button = driver.find_element(By.XPATH, path)
login_button.click()

# Continuar y aceptar
path = './/button[@aria-label="Aceptar y continuar"]'
continue_button = driver.find_element(By.XPATH, path)
continue_button.click()

# ...

Con esta aproximación, hemos automatizado la extracción de información en varios contextos: tiendas en línea y servicios de streaming. El uso de Selenium y BeautifulSoup permite adaptar el scraping a distintos escenarios, manejando logins, scroll infinito y parsing de HTML. De esta forma, se pueden generar datasets para posteriores análisis de negocio o simplemente para centralizar y administrar el contenido que más nos interesa.