Foros del Web » Programando para Internet » PHP »

Extraer parte de un sitio con la funcion URLopen

Estas en el tema de Extraer parte de un sitio con la funcion URLopen en el foro de PHP en Foros del Web. Investigando en este foro me encontre con esto.. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php $returned = URLopen ( "http://cinemex.com/cines/83" ) ; echo $returned ; ...
  #1 (permalink)  
Antiguo 02/01/2013, 01:05
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 7 meses
Puntos: 2
Extraer parte de un sitio con la funcion URLopen

Investigando en este foro me encontre con esto..
Código PHP:
Ver original
  1. <?php
  2. $returned=URLopen("http://cinemex.com/cines/83");
  3. echo $returned;
  4.  
  5. function URLopen($url)
  6. {
  7.        // Fake the browser type
  8.        ini_set('user_agent','Mozilla: (compatible; Windows XP)');
  9.  
  10.        $dh = fopen($url,'r');
  11.        $result = '';
  12.        $sParte = '';
  13.        while ($sParte = fread($dh,8192))
  14.                $result = $result.$sParte;
  15.        return $result;
  16. }
  17. ?>

funciona muy bien, pero como podria hacer para extraer cierta informacion.. por ejemplo lo que necesito esta dentro de una div llamada
<div id="schedules" class="update">

Gracias por su ayuda!
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México

Última edición por Capimaster; 02/01/2013 a las 01:05 Razón: cambio de url
  #2 (permalink)  
Antiguo 02/01/2013, 04:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Extraer parte de un sitio con la funcion URLopen

Código PHP:
Ver original
  1. $returned=URLopen("http://cinemex.com/cines/83");
  2. echo $returned;
  3.  
  4. function URLopen($url) {
  5. $doc = new DOMDocument();
  6. $doc->loadHTMLFile($url);
  7. $schedules = $doc->getElementById('schedules');
  8. return $schedules ->item(0)->nodeValue;
  9. }

Esto funciona?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 02/01/2013 a las 05:20
  #3 (permalink)  
Antiguo 02/01/2013, 11:10
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Extraer parte de un sitio con la funcion URLopen

me da error 500 de servidor
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #4 (permalink)  
Antiguo 02/01/2013, 12:57
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Extraer parte de un sitio con la funcion URLopen

ya intente con error_reporting(E_ALL); pero solo me da error 500
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #5 (permalink)  
Antiguo 02/01/2013, 13:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Extraer parte de un sitio con la funcion URLopen

Cita:
Iniciado por quimfv Ver Mensaje
Código PHP:
Ver original
  1. $returned=URLopen("http://cinemex.com/cines/83");
  2. echo $returned;
  3.  
  4. function URLopen($url) {
  5. $doc = new DOMDocument();
  6. $doc->loadHTMLFile($url);
  7. $schedules = $doc->getElementById('schedules');
  8. return $schedules ->item(0)->nodeValue;
  9. }

Esto funciona?
en vez de $schedules ->item(0)->nodeValue sería $schedules->nodeValue ya que un id es único.

Saludos.
__________________
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
  #6 (permalink)  
Antiguo 02/01/2013, 13:59
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Extraer parte de un sitio con la funcion URLopen

no es mas simple que hagas un debug para ver que te trae??

Código PHP:
Ver original
  1. echo "<pre>";
  2. var_dump($schedules);
  3. echo "</pre>";

de manera que verifiques lo que estas trayendo y puedas trabajarlo de la mejor manera, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 02/01/2013, 14:22
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Extraer parte de un sitio con la funcion URLopen

Cita:
Iniciado por carlos_belisario Ver Mensaje
no es mas simple que hagas un debug para ver que te trae??

Código PHP:
Ver original
  1. echo "<pre>";
  2. var_dump($schedules);
  3. echo "</pre>";

de manera que verifiques lo que estas trayendo y puedas trabajarlo de la mejor manera, saludos
Con DOM no muestra esa información como lo hace simpleXML, habría que importar el DOM con simplexml_import_dom.

--------------------------

si quieres las peliculas puedes hacer algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $doc = new DOMDocument();
  4. $doc->loadHTMLFile('http://cinemex.com/cines/83');
  5. $xpath = new DOMXPath($doc);
  6. $peliculas = $xpath->query('//div[@class="block"]');
  7.  
  8. foreach ($peliculas as $pelicula) {
  9.     echo $pelicula->nodeValue . '<br />';
  10. }

Saludos.
__________________
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
  #8 (permalink)  
Antiguo 02/01/2013, 14:25
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Extraer parte de un sitio con la funcion URLopen

okei ya di un paso gracias andres...

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. function get_links($url) {
  5.  
  6.     // Create a new DOM Document to hold our webpage structure
  7.     $xml = new DOMDocument();
  8.  
  9.     // Load the url's contents into the DOM
  10.     $xml->loadHTMLFile($url);
  11.  
  12.    
  13.    
  14.     // Empty array to hold all links to return
  15.     $links = array();
  16.  
  17.     //Loop through each <a> tag in the dom and add it to the link array
  18.     foreach($xml->getElementsByTagName('img') as $link) {
  19.         $links[] = array('url' => $link->getAttribute('src'));
  20.     }
  21.  
  22.     //Return the links
  23.     return $links;
  24.    
  25. }
  26.  
  27. $distro = get_links("http://cinemex.com/cines/83");
  28. print_r ($distro);
  29. ?>

ahora con esto extraigo todas las imagenes del sitio... pero quiero filtrar la informacion, solo quiero que me de las que comiencen con http://cache-cmx.netmx.mx/image/muestras/ esta ruta.. como lo puedo hacer
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #9 (permalink)  
Antiguo 02/01/2013, 14:34
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Extraer parte de un sitio con la funcion URLopen

andresdzphp muchas gracias con eso ya tengo la informacion de la pelicula solo me haria falta extraer la imagen de portada... como podria hacer esto?

De nuevo gracias!
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #10 (permalink)  
Antiguo 02/01/2013, 14:39
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Extraer parte de un sitio con la funcion URLopen

Cita:
Iniciado por Capimaster Ver Mensaje
andresdzphp muchas gracias con eso ya tengo la informacion de la pelicula solo me haria falta extraer la imagen de portada... como podria hacer esto?

De nuevo gracias!
Las imágenes se podrían sacar así:

Código PHP:
Ver original
  1. <?php
  2. $doc = new DOMDocument();
  3. $doc->loadHTMLFile('http://cinemex.com/cines/83');
  4. $xpath = new DOMXPath($doc);
  5. $imgs = $xpath->query('//div[@class="img-cont"]');
  6.  
  7. foreach ($imgs as $img) {
  8.     echo $img->getElementsByTagName('img')->item(0)->getAttribute('src') . '<br />';
  9. }

Te recomiendo este aporte, para que completes los ejemplos que te he dado.

Saludos.
__________________
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
  #11 (permalink)  
Antiguo 02/01/2013, 14:57
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Extraer parte de un sitio con la funcion URLopen

Como podria combinar los dos query es decir.... para con el mismo foreach mostar la pelicula y la imagen en la misma vuelta...
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #12 (permalink)  
Antiguo 02/01/2013, 15:39
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Extraer parte de un sitio con la funcion URLopen

Algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $doc = new DOMDocument();
  4. $doc->loadHTMLFile('http://cinemex.com/cines/83');
  5. $xpath = new DOMXPath($doc);
  6. $peliculas = $xpath->query('//div[@class="block"]');
  7. $imagenes = $xpath->query('//div[@class="img-cont"]');
  8.  
  9. for ($i = 0; $i < $peliculas->length; $i++) {
  10.     echo "<img src=\"{$imagenes->item($i)->getElementsByTagName('img')->item(0)->getAttribute('src')}\" /> <br />";
  11.     echo "{$peliculas->item($i)->nodeValue} <hr />";
  12. }
__________________
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

Etiquetas: funcion, html, parte
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 04:44.