Foros del Web » Programando para Internet » PHP »

Extraer contenido de una tabla de otra web

Estas en el tema de Extraer contenido de una tabla de otra web en el foro de PHP en Foros del Web. Hola, creo que la pregunta está clara, no sé cómo sacar el contenido de una web para ponerlo en la mía, o usarlo en parte. ...
  #1 (permalink)  
Antiguo 24/03/2012, 09:05
 
Fecha de Ingreso: octubre-2010
Mensajes: 77
Antigüedad: 13 años, 6 meses
Puntos: 4
Extraer contenido de una tabla de otra web

Hola, creo que la pregunta está clara, no sé cómo sacar el contenido de una web para ponerlo en la mía, o usarlo en parte. Sería una imagen de imdb.com, en concreto el cartel de una película, que va dentro de estas líneas:
Código:
<td rowspan="2" id="img_primary">
 

<a onclick="(new Image()).src='/rg/title-overview/primary/images/b.gif?link=%2Fmedia%2Frm3162935808%2Ftt0072431';" href="/media/rm3162935808/tt0072431"><img src="http://ia.media-imdb.com/images/M/MV5BMTc2MzgwNjAzNV5BMl5BanBnXkFtZTcwNTUyNjQzMQ@@._V1._SY317_CR7,0,214,317_.jpg"style="max-width:214px; max-height:317px;" height="317"
alt="El jovencito Frankenstein Poster" title="El jovencito Frankenstein Poster"  itemprop="image" /></a>

</td>
A mí me gustaría sacar esa imagen, la que está entre <img>, claro, pero teniendo en cuenta que cambia según la película que busque.

La forma que se me ocurre es que PHP saque el código HTML generado y que busque la cadena de texto que le diga, en este caso la etiqueta <td rowspan="2" id="img_primary">, y que saque lo que hay ahí hasta que ponga </td>, pero no estoy seguro de que esto se pueda hacer, ¿alguna ayuda?

Un saludo y gracias.
  #2 (permalink)  
Antiguo 24/03/2012, 09:27
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Extraer contenido de una tabla de otra web

Puedes leer un poco alguna guia de Curl
con esta libreria puedes resolver tu problema.
  #3 (permalink)  
Antiguo 24/03/2012, 09:42
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Extraer contenido de una tabla de otra web

Puedes usar por ejemplo las clases DOM

Código PHP:
Ver original
  1. <?php
  2. $doc = new DOMDocument();
  3. $doc->loadHTML(file_get_contents('http://www.imdb.com/title/tt0072431/'));
  4. $td = $doc->getElementById('img_primary');
  5. $img = $td->getElementsByTagName('img');
  6. echo $img->item(0)->getAttribute('src');
  7. //http://ia.media-imdb.com/images/M/MV5BMTc2MzgwNjAzNV5BMl5BanBnXkFtZTcwNTUyNjQzMQ@@._V1._SY317_CR7,0,214,317_.jpg
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 24/03/2012, 10:14
 
Fecha de Ingreso: abril-2011
Mensajes: 33
Antigüedad: 13 años
Puntos: 7
Respuesta: Extraer contenido de una tabla de otra web

con get_contents() descargas el codigo fuente y con expresiones regulares puedes filtrar lo que realamente te importa
__________________
www.webserveis.com
  #5 (permalink)  
Antiguo 24/03/2012, 12:33
 
Fecha de Ingreso: octubre-2010
Mensajes: 77
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Extraer contenido de una tabla de otra web

Hola!
@gjx2 Miraré lo del curl, no lo conocía y creo que me servirá. Gracias
@andresdzphp Posiblemente sea la opción que use, me parece más sencilla. Gracias por tu respuesta.
@neuronic Eso fue lo primero que se me ocurrió al intentar hacerlo por mí mismo, pero me parece un método algo rudimentario y algo lento, de todas formas, gracias por la propuesta!

Un saludo!
  #6 (permalink)  
Antiguo 25/03/2012, 08:42
 
Fecha de Ingreso: octubre-2010
Mensajes: 77
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Extraer contenido de una tabla de otra web

Hola, he usado lo de andreszphp, y me funciona, lo único que pasa es que es demasiado lento si lo que quiero es sacar varios carteles, tengo lo siguiente:
Código:
<div id="cont_center" >
	<?php
	$email = $_SESSION["email_user"];
	
	 $sql = sprintf("SELECT id_usuario FROM users WHERE email = '%s'", mysql_real_escape_string($email));
  $busca_user = mysql_query($sql);
  
  $array = mysql_fetch_array($busca_user);
  $id_usuario = $array["id_usuario"];
  
  $sql_peli = sprintf("SELECT * FROM users_pelis WHERE id_usuario = '2'");
  $consulta = mysql_query($sql_peli);
  

  $doc = new DOMDocument();
	libxml_use_internal_errors(true);
	echo '<div style="width: 140px; height: 120px" class="precarga">';
  	while ($user = mysql_fetch_array($consulta)){
	    $cartel = $user['id_peli'];
	    $doc->loadHTML(file_get_contents("http://www.imdb.com/title/tt$cartel/"));
	    $td = $doc->getElementById('img_primary');
	    $img = $td->getElementsByTagName('img');
	    $imagen = $img->item(0)->getAttribute('src');
	    
	    
		    echo "<img src=$imagen width='50px' height='70px' />";
		    echo "<br />";
	   

  	}
  	 echo "</div>";
  	?>

  	<?php
	?>
</div>
Pero le cuesta bastante sacar todos los carteles. ¿Se puede acelerar el proceso de carga, o, en su defecto, poner alguna imagen que ruede para que haga de carga?

Un saludo y gracias por adelantado.

Etiquetas: contenido, html, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:00.