elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  extraer datos de pagina con file_get_contents
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: extraer datos de pagina con file_get_contents  (Leído 13,519 veces)
h3ct0r

Desconectado Desconectado

Mensajes: 108


Hail to the king baby!


Ver Perfil
Re: extraer datos de pagina con file_get_contents
« Respuesta #10 en: 19 Noviembre 2011, 17:00 pm »

El problema no es que lo entiendas tu, que lo haces, sino los demas, que lo mantienen. Yo se que tu puedes hacerlo, no es dificil. ;).

Estas equivocado con los framework. La idea de usar alguno es precisamente para no reinventar la rueda de mala manera, para asi solo usar tecnicas y herramientas probadas y testeadas para ser la mejor opcion. No se que frameworks lentos usaras tu (o si tu mismo te codeas frameworks lentos).

Yo tengo varios freeBSD corriendo como firewall en pentium2 y con muy poco ram. Y justamente, ademas de las reglas y optimizaciones que hago, esta corriendo un sistema testeado por la comunidad, que en principio nunca mudara de ese hardware pequeno. Y corre muuuy bien mi firewall/framework con alguno que otro codigo extra hecho por mi.

Y volviendo al tema, para lo que kanser necesita, segun sus explicaciones, es mejor un parser. Que lo puede hacer con una expresion regular grande, pues claro que puede!, pero no es la mejor opcion.


En línea

[img[/img]
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: extraer datos de pagina con file_get_contents
« Respuesta #11 en: 19 Noviembre 2011, 19:48 pm »

LOL


En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
h3ct0r

Desconectado Desconectado

Mensajes: 108


Hail to the king baby!


Ver Perfil
Re: extraer datos de pagina con file_get_contents
« Respuesta #12 en: 19 Noviembre 2011, 23:58 pm »

rolf
En línea

[img[/img]
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: extraer datos de pagina con file_get_contents
« Respuesta #13 en: 20 Noviembre 2011, 00:16 am »

Acá hize un simple script que hace lo que necesitas:



Código
  1. <?php
  2. $a = '
  3. xxx
  4. <input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="1" type="text">
  5. <input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="2" type="text">
  6. xxx
  7. <input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="3" type="text">
  8. <td class="TextoGeneralTabla" align="right" width="15%"><b>
  9.  
  10. $
  11. 627,732.00&nbsp;&nbsp;&nbsp;</b></td>
  12. ';
  13.  
  14. /* Obtiene el costo: */
  15. $b = explode('&nbsp;&nbsp;&nbsp;</b></td>', $a);
  16. $b = explode('$', $b[0]);
  17. $b = $b[count($b) - 1];
  18. $b = preg_replace('|[^0-9\.,]|i', '', $b);
  19. echo '<p>Valor costo: <strong>'.$b.'</strong></p>';
  20. // 627,732.00
  21.  
  22. /* Obtiene lovalores numéricos */
  23. $r = array();
  24. $d = explode('onkeypress="SoloNumerico();" ', $a);
  25. foreach($d as $b){
  26. $c = explode('value="', $b);
  27. $c = explode('"', $c[1]);
  28. if((int)$c[0] > 0)
  29. $r[] = (int)$c[0];
  30. }
  31.  
  32. echo 'Valores numéricos: <pre>'.print_r($r, true).'</pre>';
  33. /*
  34. Array
  35. (
  36.     [0] => 1
  37.     [1] => 2
  38.     [2] => 3
  39. )
  40. */
  41. ?>

Saludos.
« Última modificación: 20 Noviembre 2011, 00:25 am por WHK » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: extraer datos de pagina con file_get_contents
« Respuesta #14 en: 20 Noviembre 2011, 16:43 pm »

Código
  1. <?php
  2. $tablaHTML = ' <table class="TextoGeneral" align="CENTER" border="0" cellpadding="2" cellspacing="2" width="100%">
  3. <tbody><tr class="TextoGeneralRojomedium">
  4. <td colspan="6"><b>
  5. </b></td>
  6. </tr>
  7. <tr>
  8. <td class="FormTitulo" align="CENTER" width="8%">Remover</td>
  9.  
  10. <td class="FormTitulo" align="CENTER" width="8%">Cantidad</td>
  11.  
  12.      <td class="FormTitulo" align="LEFT" width="25%">&nbsp;Descripción
  13.        del Producto</td>
  14. <td class="FormTitulo" align="CENTER" width="15%">ID Producto</td>
  15. <td class="FormTitulo" align="CENTER" width="15%">Precio Unitario</td>
  16. <td class="FormTitulo" align="CENTER" width="15%">Precio Total</td>
  17. </tr>
  18.  
  19. <tr>
  20.  
  21. <td class="TextoGeneralTabla" align="CENTER" width="8%"><input name="Check" value="Producto 3" type="radio"></td>
  22. <td class="TextoGeneralTabla" align="CENTER" width="8%"><input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto0" value="7" type="text"></td>
  23. <td class="TextoGeneralTabla" align="CENTER" width="25%">Producto 3</td>
  24. <td class="TextoGeneralTabla" align="CENTER" width="15%">-</td>
  25. <td class="TextoGeneralTabla" align="RIGHT" width="15%">
  26.  
  27. $ <input name="TipoMonedaProducto 3" value="1" type="hidden">
  28. 89,076.00&nbsp;&nbsp;&nbsp;</td>
  29.  
  30. <td class="TextoGeneralTabla" align="RIGHT" width="15%">
  31.  
  32.  
  33. $
  34. 623,532.00&nbsp;&nbsp;&nbsp;</td>
  35.  
  36. </tr>
  37. <tr>
  38.  
  39. <td class="TextoGeneralTabla" align="CENTER" width="8%"><input name="Check" value="Producto 2" type="radio"></td>
  40. <td class="TextoGeneralTabla" align="CENTER" width="8%"><input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="6" type="text"></td>
  41. <td class="TextoGeneralTabla" align="CENTER" width="25%">Producto 2</td>
  42. <td class="TextoGeneralTabla" align="CENTER" width="15%">-</td>
  43. <td class="TextoGeneralTabla" align="RIGHT" width="15%">
  44.  
  45. $ <input name="TipoMonedaProducto 2" value="1" type="hidden">
  46.  
  47. 700.00&nbsp;&nbsp;&nbsp;</td>
  48.  
  49. <td class="TextoGeneralTabla" align="RIGHT" width="15%">
  50.  
  51. $
  52. 4,200.00&nbsp;&nbsp;&nbsp;</td>
  53.  
  54. </tr>
  55. <tr>
  56.  
  57. <td colspan="5" class="TextoGeneralTabla" align="RIGHT" width="55%"><b>Total&nbsp;&nbsp;&nbsp;</b></td>
  58. <td class="TextoGeneralTabla" align="right" width="15%"><b>
  59.  
  60. $
  61. 627,732.00&nbsp;&nbsp;&nbsp;</b></td>
  62.  
  63. </tr>
  64. </tbody></table>';
  65.  
  66.  
  67. preg_match_all('/(?=name\=\"Change120088Producto\d\"\s[^=]+=\"(\d+)\")|TextoGeneralTabla" align="right" width="15%"><b>\s[^\d]+([\d\,]+)/i', $tablaHTML,$result);
  68.  
  69. print_r($result);
  70. ?>
  71.  


Código
  1. Array
  2. (
  3.    [0] => Array
  4.        (
  5.            [0] =>
  6.            [1] =>
  7.            [2] => TextoGeneralTabla" align="right" width="15%"><b>
  8.  
  9. $
  10. 627,732
  11.        )
  12.  
  13.    [1] => Array
  14.        (
  15.            [0] => 7
  16.            [1] => 6
  17.            [2] =>
  18.        )
  19.  
  20.    [2] => Array
  21.        (
  22.            [0] =>
  23.            [1] =>
  24.            [2] => 627,732
  25.        )
  26.  
  27. )


Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
h3ct0r

Desconectado Desconectado

Mensajes: 108


Hail to the king baby!


Ver Perfil
Re: extraer datos de pagina con file_get_contents
« Respuesta #15 en: 20 Noviembre 2011, 19:14 pm »

Código
  1. <?php
  2. include('simple_html_dom.php');
  3.  
  4. $str = '
  5. <table class="TextoGeneral" align="CENTER" border="0" cellpadding="2" cellspacing="2" width="100%">
  6. <tbody><tr class="TextoGeneralRojomedium">
  7. <td colspan="6"><b>
  8. </b></td>
  9. </tr>
  10. <tr>
  11. <td class="FormTitulo" align="CENTER" width="8%">Remover</td>
  12.  
  13. <td class="FormTitulo" align="CENTER" width="8%">Cantidad</td>
  14.  
  15.      <td class="FormTitulo" align="LEFT" width="25%">&nbsp;Descripción
  16.        del Producto</td>
  17. <td class="FormTitulo" align="CENTER" width="15%">ID Producto</td>
  18. <td class="FormTitulo" align="CENTER" width="15%">Precio Unitario</td>
  19. <td class="FormTitulo" align="CENTER" width="15%">Precio Total</td>
  20. </tr>
  21.  
  22. <tr>
  23.  
  24. <td class="TextoGeneralTabla" align="CENTER" width="8%"><input name="Check" value="Producto 3" type="radio"></td>
  25. <td class="TextoGeneralTabla" align="CENTER" width="8%"><input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto0" value="7" type="text"></td>
  26. <td class="TextoGeneralTabla" align="CENTER" width="25%">Producto 3</td>
  27. <td class="TextoGeneralTabla" align="CENTER" width="15%">-</td>
  28. <td class="TextoGeneralTabla" align="RIGHT" width="15%">
  29.  
  30. $ <input name="TipoMonedaProducto 3" value="1" type="hidden">
  31. 89,076.00&nbsp;&nbsp;&nbsp;</td>
  32.  
  33. <td class="TextoGeneralTabla" align="RIGHT" width="15%">
  34.  
  35.  
  36. $
  37. 623,532.00&nbsp;&nbsp;&nbsp;</td>
  38.  
  39. </tr>
  40. <tr>
  41.  
  42. <td class="TextoGeneralTabla" align="CENTER" width="8%"><input name="Check" value="Producto 2" type="radio"></td>
  43. <td class="TextoGeneralTabla" align="CENTER" width="8%"><input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="6" type="text"></td>
  44. <td class="TextoGeneralTabla" align="CENTER" width="25%">Producto 2</td>
  45. <td class="TextoGeneralTabla" align="CENTER" width="15%">-</td>
  46. <td class="TextoGeneralTabla" align="RIGHT" width="15%">
  47.  
  48. $ <input name="TipoMonedaProducto 2" value="1" type="hidden">
  49.  
  50. 700.00&nbsp;&nbsp;&nbsp;</td>
  51.  
  52. <td class="TextoGeneralTabla" align="RIGHT" width="15%">
  53.  
  54. $
  55. 4,200.00&nbsp;&nbsp;&nbsp;</td>
  56.  
  57. </tr>
  58. <tr>
  59.  
  60. <td colspan="5" class="TextoGeneralTabla" align="RIGHT" width="55%"><b>Total&nbsp;&nbsp;&nbsp;</b></td>
  61. <td class="TextoGeneralTabla" align="right" width="15%"><b>
  62.  
  63. $
  64. 627,732.00&nbsp;&nbsp;&nbsp;</b></td>
  65.  
  66. </tr>
  67. </tbody></table>';
  68.  
  69. $html = str_get_html($str);
  70. //o tambien puedes $html = file_get_html('http://www.tupagina.com/')
  71.  
  72. foreach($html->find('input[onkeypress=SoloNumerico();]') as $element) echo $element->value .'<br>';
  73.  
  74. echo $html->find('td[class=TextoGeneralTabla]', -1)->plaintext;
  75. ?>

Resultado:

Código:
7
6
$627,732.00

 :xD
« Última modificación: 20 Noviembre 2011, 19:25 pm por h3ct0r » En línea

[img[/img]
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: extraer datos de pagina con file_get_contents
« Respuesta #16 en: 20 Noviembre 2011, 22:00 pm »

h3ct0r pasale un memory_get_usage() a eso, de seguro que consume sus 100 veces mas memoria que cualquiera de los otros dos scripts xD

El de yoya consume 10kb de memoria menos que el mio.

Código:
Array
(
    [0] => Array
        (
            [0] =>
            [1] =>
            [2] => TextoGeneralTabla" align="right" width="15%"><b>
 
$
627,732
        )

    [1] => Array
        (
            [0] => 7
            [1] => 6
            [2] =>
        )

    [2] => Array
        (
            [0] =>
            [1] =>
            [2] => 627,732
        )

)

Memory: 322064

Código:
Valor costo: 4,200.00555
Valores numéricos:

Array
(
    [0] => 7
    [1] => 6
)

Memory: 330936
« Última modificación: 20 Noviembre 2011, 22:03 pm por WHK » En línea

h3ct0r

Desconectado Desconectado

Mensajes: 108


Hail to the king baby!


Ver Perfil
Re: extraer datos de pagina con file_get_contents
« Respuesta #17 en: 21 Noviembre 2011, 03:55 am »

 :xD Si, consume mas! jejeje

Código:
7
6
$ 627,732.00   

Memoria : 920720

Pero es una solucion elegante que te resuelve muy facilmente el problema! Y puedes hacer muchas mas consultas comodamente!

En pocas consultas pequenas es poco optimizado, o hasta poco eficiente, pero cuando se hacen muchas consultas a la misma fuente hay se le ve el provecho!

@Kanser, ya tienes 3 soluciones que te dan el mismo resultado! Ya escojeras la que mejor te parezca en base a rapidez/eficiencia/mantenibilidad.

Saludos
« Última modificación: 21 Noviembre 2011, 04:00 am por h3ct0r » En línea

[img[/img]
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Extraer codigo fuente de pagina.
PHP
HadesDark 2 4,318 Último mensaje 13 Agosto 2007, 15:39 pm
por yeikos
Extraer un swf oculto de una pagina.
Dudas Generales
Gusney09 9 6,552 Último mensaje 11 Noviembre 2011, 19:35 pm
por Gusney09
Extraer Base de Datos de página web
Dudas Generales
chuecorl 4 22,712 Último mensaje 4 Septiembre 2013, 22:18 pm
por chuecorl
Extraer base de datos de una página Web
Dudas Generales
ortizjp 2 3,670 Último mensaje 1 Febrero 2015, 11:37 am
por 3n31ch
¿Existe la posibilidad de ver/extraer la base de datos de una página web que utiliza Bootstrap?
Hacking
viprin 2 4,852 Último mensaje 20 Agosto 2021, 21:46 pm
por viprin
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines