PHP - Duda Scrapear Datos

   
Vista:

Duda Scrapear Datos

Publicado por Sergio (8 intervenciones) el 10/07/2014 17:15:41
Buenos días,

Disculpad si os molesto u os parece una tonteria. Llevo unos dias dando vueltas a como manejar un scraper, y cuando creo que lo tengo, me surge una duda... ¿Cual sería la forma más optima de separar los datos? Os pego el código por si es de utilidad:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$curl = curl_init('http://www.betexplorer.com/soccer/spain/primera-division/results/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
 
$page = curl_exec($curl);
 
if(curl_errno($curl)) // check for execution errors
{
	echo 'Error al Scrapear: ' . curl_error($curl);
	exit;
}
 
curl_close($curl);
 
// Aqui hago la extraccion de la parte de la web que me interesa.
$regex = '/<tbody id="leagueresults_tbody">(.*?)<\/tbody>/s';
if ( preg_match($regex, $page, $list) ){
	echo "<pre>";
		$algo = explode(' : ', $list[0]);
		print_r ($algo);
	echo "</pre>";
	}
else {
    print "Sin datos que mostrar";
	}
?>

La ultima idea, era un explode desde el resultado, y empezar a separar desde ahí, pero me surgio el problema/duda, de, y si no todos los marcadores llegan a 9 tantos? Necesito controlar
Jornada
Fecha
Equipo 1
Equipo 2
Marcador Equipo 1
Marcador Equipo 2

Espero podais ayudarme, antes de volverme loco... Un Cordial Saludo Gente.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Duda Scrapear Datos

Publicado por xve (5520 intervenciones) el 10/07/2014 21:09:28
Hola Sergio, yo te recomendaria utilizar un PHP-Parser... hoy he utilizado uno que me fue muy bien en un proyecto...
http://simplehtmldom.sourceforge.net/

Pero ahora buscando, he encontrado también este: https://github.com/nikic/PHP-Parser que desconozco que tal funciona...

Con el primero, podrás realizar una búsqueda por las clases de de los divs, que creo que es lo que necesitas exactamente.

Espero que te sirva... ya nos comentaras si lo implementas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda Scrapear Datos

Publicado por Sergio (8 intervenciones) el 10/07/2014 23:00:48
Buenas noches,

Si, esta libreria la probé antes de hacerlo a pelo, y no me aclaraba, ahora, para otras cosas que hice hace tiempo, funcionaba bastante bien, muchas gracias de todos modos. No obstante, si tienes algun ejemplo, se agradecería.

Un Cordial Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda Scrapear Datos

Publicado por Sergio (8 intervenciones) el 18/07/2014 19:46:20
Buenas chicos,

Comentar que asi consigo leer todo...

<?php
header('Content-Type: text/plain');
include ("./simple_html_dom.php");

$html = new simple_html_dom();

$html->load_file('http://www.betexplorer.com/soccer/spain/primera-division/results/');

foreach($html->find('<tbody id="leagueresults_tbody">') as $element)
echo $element->href . '</br>';

echo $html;
?>

Alguien que me ayude a quedarme con los datos que busco, de forma facil? Enga, que no se diga que es verano...

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda Scrapear Datos

Publicado por Sergio (8 intervenciones) el 03/08/2014 18:52:27
Chicos, un pasito mas, alguien que me ayude a refinar? Este es elcodigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
    function Obtener_contenidos($url,$inicio='',$final){
		$source = file_get_contents($url)or die('se ha producido un error');
 
		$posicion_inicio = strpos($source, $inicio) + strlen($inicio);
 
		$posicion_final = strpos($source, $final) - $posicion_inicio;
 
		$found_text = substr($source, $posicion_inicio, $posicion_final);
 
		return $found_text;
	}
 
	$url = 'http://www.betexplorer.com/soccer/spain/primera-division-2004-2005/results/';/// pagina web del contenido
 
  echo "<pre>";
  print_r (Obtener_contenidos($url,'<td class="odds"','</td>'));  //Hay que AFINAR
  echo "</pre>";
?>

Y esto sería un ejemplo de la primera fila de una jornada

1
2
3
4
5
6
7
<tr class="first-row"><td class="first-cell tl">
<a href="../matchdetails.php?matchid=U1Sl3OYs" onclick="win(this.href, 560, 500, 0, 1); return false;">Atl. Madrid - Getafe</a></td>
<td class="result"><a href="../matchdetails.php?matchid=U1Sl3OYs" onclick="win(this.href, 560, 500, 0, 1); return false;">2:2</a></td>
<td class="odds" data-odd="1.86"></td>
<td class="odds best-betrate" data-odd="3.23">
</td><td class="odds" data-odd="3.79"></td>
<td class="last-cell nobr date">29.05.2005</td></tr>

Una ayudita.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Duda Scrapear Datos

Publicado por xve (5520 intervenciones) el 04/08/2014 10:14:33
Hola Sergio, me da la sensación de que tiene que funcionar correctamente...

Me puedes indicar una url de las que le pasas a la función para probarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda Scrapear Datos

Publicado por Sergio (8 intervenciones) el 04/08/2014 11:14:49
Buenos dias,

Está en el ejemplo, pero....:

$url = 'http://www.betexplorer.com/soccer/spain/primera-division-2004-2005/results/';

No termino de ver como recorrer cada evento y jornada, teniendolos controlados

Un Saludo¡
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar