Foros del Web » Programando para Internet » PHP »

Problema PHP Simple HTML DOM

Estas en el tema de Problema PHP Simple HTML DOM en el foro de PHP en Foros del Web. Hola, muy buenas. En realidad no me interesa la forma en la que conseguirlo, he estado haciéndolo con PHP Simple HTML DOM pero me vale ...
  #1 (permalink)  
Antiguo 09/11/2014, 06:22
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Problema PHP Simple HTML DOM

Hola, muy buenas.

En realidad no me interesa la forma en la que conseguirlo, he estado haciéndolo con PHP Simple HTML DOM pero me vale cualquier forma. Lo que quiero conseguir es la frase donde pone "Reportero de Habtium" en la siguiente URL:

http://www.habbo.es/habblet/habbosea...String=anen100

He probado con el siguiente código:

Código PHP:
Ver original
  1. require "simple_html_dom.php";
  2. $html = file_get_html('https://www.habbo.es/habblet/habbosearchcontent?searchString=anen100');
  3. $user = $html->find('li[homeurl="/home/anen100"]', 0);
  4. $motto = $user->find('div.item', 0)->find('text', 2)->plaintext;
  5. echo $motto;

Y creo que el código está bien pero el problema es la página que me bloquea que yo coja esa información, no sé. ¿Cómo podría cogerla?

Muchas gracias.
  #2 (permalink)  
Antiguo 09/11/2014, 06:41
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 4 meses
Puntos: 181
Respuesta: Problema PHP Simple HTML DOM

Nunca he utilizado esta clase pero yo sugiero que revisaras la faq de la clase, de pronto puede estar bien escrita la expresión regular (repito que nunca la he usado) pero tenga problemas de configuración del php.ini para abrir las urls.

http://simplehtmldom.sourceforge.net/manual_faq.htm

No puedo saber si la sintaxis que tienes es correcta o no porque eso ya lo debes revisar tu en la documenatción, pero yo empezaria a investigar por este lado.

Igual no sobraria que usaras una clase ya implementada en php, siempre es mas facil de usar algo que ya viene en la libreria oficial.

http://es1.php.net/manual/es/class.domdocument.php
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 09/11/2014 a las 06:55
  #3 (permalink)  
Antiguo 09/11/2014, 10:24
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Respuesta: Problema PHP Simple HTML DOM

Cita:
Iniciado por cuasatar Ver Mensaje
Nunca he utilizado esta clase pero yo sugiero que revisaras la faq de la clase, de pronto puede estar bien escrita la expresión regular (repito que nunca la he usado) pero tenga problemas de configuración del php.ini para abrir las urls.

http://simplehtmldom.sourceforge.net/manual_faq.htm

No puedo saber si la sintaxis que tienes es correcta o no porque eso ya lo debes revisar tu en la documenatción, pero yo empezaria a investigar por este lado.

Igual no sobraria que usaras una clase ya implementada en php, siempre es mas facil de usar algo que ya viene en la libreria oficial.

http://es1.php.net/manual/es/class.domdocument.php
Haciéndolo con DOM, sería, ¿así?

Código PHP:
Ver original
  1. $ch = curl_init('https://www.habbo.es/habblet/habbosearchcontent?searchString=anen100');
  2. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  3. $cl = curl_exec($ch);
  4.  
  5.  
  6. $dom = new DOMDocument();
  7. @$dom->loadHTML($cl);
  8. $xpath = new DOMXpath($dom);
  9.  
  10. $getuser = $xpath->query('//li[@homeurl="/home/anen100"]/text()');
  11. $usermotto = $getuser->item(0)->nodeValue;
  12. echo $usermotto;

¿Sería así con DOM?
  #4 (permalink)  
Antiguo 11/11/2014, 12:26
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Respuesta: Problema PHP Simple HTML DOM

Siento el doble post, ¿podrían probar a ver si les funciona a ustedes? Así podré saber si el problema es del código, de mi hosting o de la otra página web que lo bloquea...
  #5 (permalink)  
Antiguo 12/11/2014, 09:30
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 4 meses
Puntos: 181
Respuesta: Problema PHP Simple HTML DOM

Código PHP:
// Get a file into an array.  In this example we'll go through HTTP to get
// the HTML source of a URL.
$lines file('https://www.habbo.es/habblet/habbosearchcontent?searchString=anen100');

// Loop through our array, show HTML source as HTML source; and line numbers too.
foreach ($lines as $line_num => $line) {
    echo 
"Line #<b>{$line_num}</b> : " htmlspecialchars($line) . "<br />\n";

Bueno, este problema tiene su reto y no se como atacarlo. Por pura curiosidad probe este codigo para verificar si el archivo es podia leer como un arreglo normal (a fin de verificar rapidamente que podria estar ocurriendo). Si lo ejecutas podras ver la siguiente respuesta:

Cita:
Line #43 : <noscript>This site requires JavaScript and Cookies to be enabled. Please change your browser settings or upgrade your browser.</noscript>
Si alguien nos puede echar una ayuda a mirar este problema seria muy instructivo. No se si el hecho de que sea una conexión https impida hacer la lectura del dato y por tanto es imposible leerlo (esa es mi hipotesis y creo que tiene fundamento porque si no que tipo de seguridad brindaria una pagina de una entidad bancaria) Igual es una opinión pero no tengo bases para confirmar mi hipotesis.
__________________
Blog de humor http://elcuasatar.net63.net/
  #6 (permalink)  
Antiguo 02/12/2014, 15:44
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Respuesta: Problema PHP Simple HTML DOM

Lo siento por tardar tanto en contestar, alguna forma hay porque otros programadores parecen haberlo conseguido en otras páginas.
  #7 (permalink)  
Antiguo 18/12/2014, 15:57
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Respuesta: Problema PHP Simple HTML DOM

El código lo tengo ahora así:

Código PHP:
Ver original
  1. $options = array(
  2.         CURLOPT_URL            => "https://www.habbo.es/habblet/habbosearchcontent?searchString=anen100",
  3.         CURLOPT_RETURNTRANSFER => true,        
  4.         CURLOPT_HEADER         => false,        
  5.         CURLOPT_FOLLOWLOCATION => true,          
  6.         CURLOPT_ENCODING       => "",          
  7.         CURLOPT_USERAGENT      => "spider",      
  8.         CURLOPT_AUTOREFERER    => true,      
  9.         CURLOPT_CONNECTTIMEOUT => 120,          
  10.         CURLOPT_TIMEOUT        => 120,          
  11.         CURLOPT_MAXREDIRS      => 10,      
  12.         CURLOPT_COOKIESESSION => true,      
  13.         CURLOPT_POST           => 1,            
  14.         CURLOPT_SSL_VERIFYHOST => 0,            
  15.         CURLOPT_SSL_VERIFYPEER => false,
  16.         CURLOPT_SSLVERSION     => CURL_SSLVERSION_TLSv1,
  17.         CURLOPT_VERBOSE        => 1                
  18. );
  19. $page = curl_init("https://www.habbo.es/habblet/habbosearchcontent?searchString=anen100");
  20. curl_setopt_array($options, $page);
  21. $content = curl_exec($page);
  22. if($content === false)
  23. {
  24.     echo 'Curl error: ' . curl_error($ch);
  25. }
  26. else
  27. {
  28.     echo 'Operación completada sin errores';
  29. }
  30. curl_close($page);
  31. $start = explode('<b>anen100</b><br />', $content, 2);
  32. $end = explode('</div>', $start[1], 2);
  33. $motto = substr(trim($end[0]), 0, 16);
  34. echo $motto;
  #8 (permalink)  
Antiguo 15/01/2015, 04:21
 
Fecha de Ingreso: noviembre-2012
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema PHP Simple HTML DOM

Cita:
Iniciado por iEnrique Ver Mensaje
El código lo tengo ahora así:
Con esta librería puedo extraer cualquier etiqueta de un documento html?

Etiquetas: dom, html, simple
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 21:31.