Introducción a la automatización de compras
Este artículo explica cómo crear un script de Python utilizando Selenium para automatizar el proceso de compra en plataformas como Taobao. La técnica es aplicable a otros sitios web, ya que Selenium permite simular interacciones de usuario en navegadores.
Configuración del entorno
Para desarrollar el script, se requiere Python y la biblioteca Selenium. Selenium es una herramienta que facilita la automatización de pruebas y tareas en aplicaciones web, emulando acciones humanas en navegadores como Chrome.
Instalación de dependencias
Primero, instala Selenium usando pip:
pip install selenium
La biblioteca time ya está incluida en Python, por lo que no necesita instalación adicional.
Configuración de Selenium con Chrome
Selenium necesita un controlador específico para interactuar con el navegador Chrome. Descarga el ChromeDriver compatible con la versión de tu navegador desde el sitio oficial. Asegúrate de que el ejecutable esté en una ruta accesible, como en el directorio del proyecto o en una variable de entorno del sistema.
Lógica del script de compras
El script se divide en dos fases: autenticación y ejecución de la compra. En lugar de ingreso manual de credenciales, se recomienda el uso de código QR para evitar bloqueos por parte de los sistemas de seguridad del sitio.
Fase de autenticación
El script abre la página de inicio de sesión, espera a que el usuario escanee el código QR y luego redirige al carrito de compras. Es crucial que los productos a comprar se añadan al carrito manualmente antes de ejecutar el script.
Mecanismo de compra
El objetivo principal es hacer clic en el botón de "checkout" en el momento exacto de la apertura de ventas. El script monitorea la hora y, al alcanzar el tiempo objetivo, selecciona todos los productos y procede al pago de manera continua.
Código de ejemplo en Python
El siguiente código muestra una implementación básica con Seelnium. Se han renombrado variables y funciones para mayor claridad, manteniendo la funcionalidad original.
from selenium import webdriver
import datetime
import time
def authenticate(driver):
driver.get("https://www.taobao.com")
time.sleep(3)
if driver.find_element_by_link_text("亲,请登录"):
driver.find_element_by_link_text("亲,请登录").click()
input("Escanea el código QR y presiona Enter después.")
driver.get("https://cart.taobao.com/cart.htm")
time.sleep(3)
current_time = datetime.datetime.now()
print("Autenticación completada: ", current_time.strftime('%Y-%m-%d %H:%M:%S'))
def execute_purchase(driver, target_time):
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
if now >= target_time:
while True:
try:
select_all_btn = driver.find_element_by_id("J_SelectAll2")
select_all_btn.click()
break
except:
print("Botón de seleccionar todo no encontrado...")
while True:
try:
checkout_btn = driver.find_element_by_xpath('//*[@id="J_Go"]/span')
checkout_btn.click()
print("Checkout exitoso.")
break
except:
print("Botón de checkout no encontrado...")
break
if __name__ == "__main__":
time_input = input("Introduce la hora de compra (ejemplo: 2023-12-31 20:00:00.000000): ")
driver_instance = webdriver.Chrome()
authenticate(driver_instance)
execute_purchase(driver_instance, time_input)