• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Obtener datos de un grafico y guardarlos en base de datos

MetaNex

Chapucillas
Registrado
24 Ene 2015
Mensajes
142
Puntos
0
Buenas, soy mas o menos novato en programacion y este problema se me viene grande.

Quiero obtener unos datos que aparecen al hacer "hover" con el raton sobre un grafico de una pagina web y guardarlos en una base de datos.
El grafico en cuestion es el que aparece arriba a la derecha de esta pagina ("Win Rate % by Game Length"): http://champion.gg/champion/Garen
Otro ejemplo de un grafico de este estilo es este:http://jsfiddle.net/2w8hany2/

Como se puede ver en el primer grafico, al poner el raton sobre el aparecen datos numericos: 48.13, 48.83, 49.3, 49.34 y 49.83

Mi intencion seria obtener esos datos y meterlos en una variable para cada numero. ($numero1 = 48.13; $numero2 = 48.83; ... etc)

El problema es que no se como crear un script para conseguir esos datos...
El script mas parecido que he logrado crear es uno para obtener informacion de cualquier elemento de la pagina:
$doc = new DOMDocument;
$doc->strictErrorChecking = false;
$doc->recover = true;
libxml_use_internal_errors(true);
$doc->loadHTMLFile('url');
$xpath = new DOMXPath($doc);
$query = "//div[@class='class-name']";
$entries = $xpath->query($query);
$text = $entries->item(0)->textContent;

$query2 = "//div[@class='class-name']/img";
$entries2 = $xpath->query($query2);
$image = $entries2->item(0)->getAttribute('src');
Este codigo me devolveria el texto que contiene el div con class "class-name" de la web "url" dentro de la variable $text. Tambien me devolveria el src de la imagen dentro de el mismo div en la variable $image

Cualquier ayuda la agradeceria muchisimo.
 
Bueno, por lo que puedo ver usan esta librería para crear esas gráficas.
Luego abajo del todo tienen este javascript (<script src="/js/master.min.js?v=5.7.1"></script>)que se encarga de generar las gráficas.

Luego buscando más en el código fuente hay esta linea: (matchupData.championData = ...), al final de linea puedes encontrar algo como patchWin, experienceSample, experienceRate, etc. Esos valores concuerdan con lo que hay en la gráfica. El formato se parece mucho al JSON, así que supongo que no sera complicado de parsear.
 
Los valores se encuentran en el matchupData, esta variable se encuentra dentro del HTML por el final si me acuerdo buen.
 
No consigo nada :( si esq soy bastante novato y con JSON no tengo nada de experiencia...
No deberian de obtenerse los valores numericos desde una base de datos externa?

Identifico mas o menos como el codigo genera el grafico, pero no llego a comprender como obtiene los datos numericos.
 
Lo ideal seria cogerlos de la base de datos, pero nadie te va a dar acceso a su base de datos. Lo segundo seria mirar si ellos ofrecen alguna API o buscar información para ver de donde sacan ellos esos valores. Puede que la misma gente que desarrollo el juego ofrezca una API para acceder a esa información. En caso contrario si no hay mas remedio puedes parsear el archivo y usar expresiones regulares, un gran dolor de cabeza xD.
 
Pues en efecto, el juego tiene una API, pero no proporciona los datos que tiene esa pagina. La pagina esta consigue los datos de forma propia
Por lo que no me queda mas remedio que coger los datos de la web esa... Aunque ya digo que ni idea, tras buscar muchisimo no logro saber como sacar de ahi esos numeros y eso que en un principio me pensaba que iba a ser facilisimo.

Intentare aprender como extraer los datos yo mismo quizas. Pero me quedo con mucha curiosidad por saber hacerlo directamente.
 
Va por lineas el codigo?
se me ocurre a bote pronto si con python no podrias hace un pequeño programa para buscar las lineas y con un loop sencillo redireccionar los datos q te interesen a unas variables e imprimir dichas variables...
igual es obvio lo q dije y no es tan sencillo
 
buenas, gracias por la propuesta Thornillo, lo tendre en cuenta aunque de python aun a penas se nada. Al final estoy intentando trabajar en PHP con la API del juego a ver si aprendo algo.
Pero de momento tengo un problema. Lo dejo aqui por si alguien me puede ayudar:

Estoy utilizando esta API: https://developer.riotgames.com/+
He descargado esta libreria php: http://lolclass.harings.be/demo.php
La he guardado en el servidor y he creado un script de prueba: prueba.php que he guardado en el sitio adecuado.

prueba.php es tan simple como esto:
<?php

// Load the file
include_once('LOL/Base.php');

// Use the file
use LOL\base;

// Start the class
$leagueclass = new base\LOL();

$leagueclass->setconfig(
'5******1-6**e-42**-**0b-8af******97e',
'euw', //(see regions tab)
'en_US'
);


$summoner = 'meta Nex';
$summonerdata = $leagueclass->getsummoner($summoner);

echo $summonerdata->id;
echo 'hola mundo';
?>

El problema es que en pantalla solo me aparece "hola mundo"............... Deberia aparecerme tambien una serie de numeros que seria la id

Si alguno se atreve a ayuudarme con esto se lo agradecere un monton :D
Voy a postearlo tambien en stackoverflow, si consigo alguna solucion la posteare aqui
 
Última edición:
Eso ya ni idea, si te devuelve una array usa print_r. La documentación no dice nada sobre posibles errores?
 
Tampoco va con print_r. Tampoco dice nada de posibles errores. Voy a ver con otra libreria a ver que tal
 
Vale, ya esta solucionado ese problema, simplemente he utilizado otra libreria
 
Bueno, solo decir que el problema ya lo he resuelto. Al final he tenido que hacer un lio enorme pero ya esta. Por lo enorme que es el codigo no lo posteo aqui. Pero si alguien en un futuro esta interesado, puede enviarme un MP
 
En cuanto tenga tiempo lo subo :)
 
Arriba