Análisis de mercado con Python mediante Web scraping

por | Jul 28, 2020 | Python, Web scraping | 0 Comentarios

Introducción: En este artículo se va a desarrollar un script en Python con el cual podremos obtener datos de una pagina web y enviárnoslo directamente al whatsapp.

Explicación del entorno a analizar: En el caso de este proyecto, vamos a trabajar con FIFA, en concreto con uno de los modos de juego llamada FIFA Ultimate Team, el cual es uno de los juegos con mayor repercusión del momento, por dar una cifra de la fama que alcanza, en este momento hay más 7,5 millones de jugadores activos en este modo de juego tan aclamado, donde se reparten en algunos de los torneos organizados hasta 200000 euros.

FIFA Ultimate Team: Este modo de juego de FIFA se basa en un juego de cartas, protagonizadas por jugadores de fútbol reales, las cuales se pueden adquirir para los equipos de cada usuario. Los precios de cada carta varían en función a muchas variables, entre ellas la calidad del jugador, fluctuaciones del mercado etc. Una vez que hemos hecho un equipo con las diferentes cartas para confeccionar una alineación podremos comenzar a jugar con otros usuarios.

Planteamiento del problema: El 95% de jugadores de este modo de juego son gente que no invierte dinero, dado que existe micropagos para mejorar la calidad del equipo de una forma rápida, o que invierten una cantidad muy escasa de dinero. Por tanto, solo podemos esperar a que bajen de precio las mejores cartas para hacer equipos competitivos o probar las mejores cartas que es el objetivo de todo jugador.

Solución: Existen métodos para conseguir monedas, dinero virtual del juego, como el trading, el cual se basa en comprar jugadores baratos y venderlos más caros debido a las fluctuaciones del mercado debido a distintas variables. El problema es que esto requiere mucho tiempo y dedicación al juego. La solución a esto es automatizar este proceso, es decir, obtener datos de los precios de una o varias cartas con la frecuencia que deseemos y en el momento del día que deseemos, y además que estos datos nos lleguen directamente a nuestro whatsapp.

1. Instalación de pycharm

Usaremos Pycharm para la ejecución de nuestro script como entorno de desarrollo de Python, para descargarlo simplemente clicamos aquí, y seleccionamos la opción Community.

2. Instalación de paquetes

Ahora vamos a cargar los paquetes que necesitamos para llevar a cabo nuestro script

import sys
from selenium import webdriver # Paquete para abrir navegador de forma automática
from twilio.rest import Client # Paquete para enviar mensaje por Whatsapp

3. Obtención de Driver para Chrome

Necesitaremos usar un navegador para realizar nuestra obtención de datos mediante esta técnica, en nuestro caso se usará el navegador Google Chrome.

Para descargar el driver, clicamos aquí, y seleccionamos el driver para nuestra versión de Google Chrome.

Ahora solo debemos colocar el archivo del driver en la carpeta donde se encuentre el script de Python que estamos ejecutando, e implementar el siguiente código con el que guardamos el driver en la variable deseada para poder ejecutar sus funciones. Asegurarnos de que el archivo se llama chromedriver.exe.

driver = webdriver.Chrome('./chromedriver.exe') #el archivo se llama chromedriver.exe

4. Obtención de datos

Después vamos a obtener los precios de mercado de la carta que deseemos analizar. Los datos los obtenemos de la página Futbin, la cual contiene una base de datos de todas las cartas de los jugadores que se utilizan.

driver.get('https://www.futbin.com/players?page=1&search=maradona') #Abre la página donde se encuentra el dato

precioMaradona= driver.find_element_by_xpath('//tr[@data-url="/20/player/2/diego-maradona"]//span[@class="ps4_color font-weight-bold"]').text #Guardamos el dato en la variable deseada

Lo que hacemos con el comando driver.get es abrir la pagina donde se encuentra el dato que queremos obtener.

Después para guardar el dato de la página debemos ir al código fuente de la misma y observar cual es el identificador con el que esta referenciado el dato, en este caso el nombre de la variable donde guardaremos el dato será precioMaradona.

Vemos un ejemplo en la siguiente imagen de donde obtenemos el precio de la carta del jugador Maradona. Clicaremos en botón derecho y en Inspeccionar.

Por último debemos cerrar el navegador que coge el dato, para ello usamos el siguiente fragmento de código.

driver.close()

5. Envío de WhatsApp con los datos obtenidos

Ahora vamos a enviar los datos obtenidos a nuestro WhatsApp para tener la información directamente en nuestro dispositivo.

Para ello usamos la plataforma de comunicación Twilio, la cual puede ser configurada con Python y es totalmente gratuita, accedemos a la misma desde aquí.

Creamos y configuramos nuestra cuenta de Twilio y obtenemos nuestro idenficador y nuestro Token de la configuración de nuestra cuenta. En las siguientes imágenes podemos observar como acceder a nuestro identificador, Token y número que Twilio nos ha habilitado para enviar los mensajes.

Posteriormente insertamos el resto de código el cual se usará para insertar los datos que necesita la plataforma para enviar el mensaje así como el contenido del mensaje.

account_sid='AC0c8173342275bd0f21c752e0be8f68d8' #Identificador
auth_token= '42b38017beb4f94496f808c62ea90d36' #Token
client = Client(account_sid, auth_token) #Configuración de Twilio con Identificador y Token

from_whatsapp_number = 'whatsapp:+14155238886' #Número de Twilio
to_wap='whatsapp:+34664789584' #Aquí colocaremos nuestro número de teléfono

client.messages.create(body="Maradona esta a un precio de " + precioMaradona + "!", from_=from_whatsapp_number, to=to_wap) #Mensaje que recibiremos

sys.exit(0)

6. Ejecución automática con frecuencia deseada

Ahora vamos a explicar como automatizar este proceso para que los datos se envíen cada X tiempo deseado al WhatsApp.

En primer lugar debemos seleccionar este Script para que cada vez que se ejecute Pycharm automáticamente se ejecute. Para ello, En la pantalla de Pycharm clicamos en Run/Edit configurations.

Seleccionamos el Script y clicamos en Run with Python console.

De esta manera cada vez que se ejecute Pycharm, se ejecutará el Script de forma automática.

Ahora vamos a explicar como ejecutar Pycharm dandole una frecuencia de ejecución, es decir, cada cuanto tiempo queremos recibir la actualización de datos de mercado.

Abrimos el Programador de tareas del ordenador.

Creamos una nueva tarea que permita ejecutar Pycharm para ello, clicamos en crear tarea, especificamos un nombre y configuramos desencadenador y acciones de la siguiente manera.

Establecemos el desencadenador. En este caso queremos recibir los mensajes cada 30 min, es decir, el análisis de mercado.

Para establecer la acción clicamos en Examinar y buscamos Pycharm.exe o Pycharm64.exe, en C:\Program Files\JetBrains\PyCharm Community Edition XXXX\bin

Clicamos en aceptar y ya tendremos configurada la tarea, ahora vamos a configurar la tarea que cierra Pycharm automaticamente.

Primero debemos crear un ejecutable .BAT que tenga la orden de cerrar Pycharm. Para ello, abrimos el Bloc de notas o algún programa que permita trabajar con código, recomiendo Notepad ++, y escribir el siguiente código:

TASKKILL /IM pycharm64.exe

Ahora guardamos o renombramos el archivo con extensión .BAT.

Posteriormente debemos establecer el desencadenador dos minutos mínimo después de que se active la tarea que ejecuta Pycharm, es decir, en este ejemplo la tarea que arrancaba Pycharm estaba a las 16:40, pues debemos establecer el desencadenador a las 16:42.

Para acabar especificamos una acción que permita ejecutar el .BAT que hemos creado antes para cerrar Pycharm, en mi caso, estaba ubicado en el Escritorio.

Hecho esto, ya tendremos configurado un ciclo de recepción de datos con el cual podemos despreocuparnos dado que todos los recibiremos en nuestro dispositivo cada 30 min, pudiendo saber en que momento cuando una carta ha subido o ha bajado de precio.

7. Conclusiones

Para concluir con el artículo podemos decir que este es un ejemplo en el que multitud de personas están implicadas debido a la extensa jugabillidad del titulo. También podemos decir que es un ejemplo de la aplicabilidad de conocimientos técnicos y de un lenguaje muy utilizado en todo el mundo por ser también extensamente utilizado en los modelos de IA y Machine Learning como es Python a un área de ocio como puede ser el mundo de los videojuegos, aunque el mismo este moviendo mucha cantidad de dinero en el mundo a dia de hoy.

La automatización de procesos es el futuro de la productividad en cualquier empresa y este es un método el cual podríamos aplicar a cualquier mercado y a cualquier situación, por ejemplo podríamos aplicarla a un mercado de la bolsa el cual quisiéramos explotar sabiendo cuando tiene sus picos y sus mínimos de forma inmediata.

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada.