Autor
|
Tema: extraer datos de pagina con file_get_contents (Leído 13,519 veces)
|
h3ct0r
Desconectado
Mensajes: 108
Hail to the king baby!
|
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
Mensajes: 1.125
|
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
Mensajes: 108
Hail to the king baby!
|
rolf
|
|
|
En línea
|
[img[/img]
|
|
|
WHK
|
Acá hize un simple script que hace lo que necesitas: <?php $a = ' xxx <input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="1" type="text"> <input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="2" type="text"> xxx <input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="3" type="text"> <td class="TextoGeneralTabla" align="right" width="15%"><b> $ 627,732.00 </b></td> '; /* Obtiene el costo: */ $b = explode(' </b></td>', $a); echo '<p>Valor costo: <strong>'.$b.'</strong></p>'; // 627,732.00 /* Obtiene lovalores numéricos */ $d = explode('onkeypress="SoloNumerico();" ', $a); foreach($d as $b){ if((int)$c[0] > 0) $r[] = (int)$c[0]; } echo 'Valores numéricos: <pre>'.print_r($r, true).'</pre>'; /* Array ( [0] => 1 [1] => 2 [2] => 3 ) */ ?>
Saludos.
|
|
« Última modificación: 20 Noviembre 2011, 00:25 am por WHK »
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
<?php $tablaHTML = ' <table class="TextoGeneral" align="CENTER" border="0" cellpadding="2" cellspacing="2" width="100%"> <tbody><tr class="TextoGeneralRojomedium"> <td colspan="6"><b> </b></td> </tr> <tr> <td class="FormTitulo" align="CENTER" width="8%">Remover</td> <td class="FormTitulo" align="CENTER" width="8%">Cantidad</td> <td class="FormTitulo" align="LEFT" width="25%"> Descripción del Producto</td> <td class="FormTitulo" align="CENTER" width="15%">ID Producto</td> <td class="FormTitulo" align="CENTER" width="15%">Precio Unitario</td> <td class="FormTitulo" align="CENTER" width="15%">Precio Total</td> </tr> <tr> <td class="TextoGeneralTabla" align="CENTER" width="8%"><input name="Check" value="Producto 3" type="radio"></td> <td class="TextoGeneralTabla" align="CENTER" width="8%"><input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto0" value="7" type="text"></td> <td class="TextoGeneralTabla" align="CENTER" width="25%">Producto 3</td> <td class="TextoGeneralTabla" align="CENTER" width="15%">-</td> <td class="TextoGeneralTabla" align="RIGHT" width="15%"> $ <input name="TipoMonedaProducto 3" value="1" type="hidden"> 89,076.00 </td> <td class="TextoGeneralTabla" align="RIGHT" width="15%"> $ 623,532.00 </td> </tr> <tr> <td class="TextoGeneralTabla" align="CENTER" width="8%"><input name="Check" value="Producto 2" type="radio"></td> <td class="TextoGeneralTabla" align="CENTER" width="8%"><input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="6" type="text"></td> <td class="TextoGeneralTabla" align="CENTER" width="25%">Producto 2</td> <td class="TextoGeneralTabla" align="CENTER" width="15%">-</td> <td class="TextoGeneralTabla" align="RIGHT" width="15%"> $ <input name="TipoMonedaProducto 2" value="1" type="hidden"> 700.00 </td> <td class="TextoGeneralTabla" align="RIGHT" width="15%"> $ 4,200.00 </td> </tr> <tr> <td colspan="5" class="TextoGeneralTabla" align="RIGHT" width="55%"><b>Total </b></td> <td class="TextoGeneralTabla" align="right" width="15%"><b> $ 627,732.00 </b></td> </tr> </tbody></table>'; preg_match_all('/(?=name\=\"Change120088Producto\d\"\s[^=]+=\"(\d+)\")|TextoGeneralTabla" align="right" width="15%"><b>\s[^\d]+([\d\,]+)/i', $tablaHTML,$result); ?>
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 ) )
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
Mensajes: 108
Hail to the king baby!
|
<?php include('simple_html_dom.php'); $str = ' <table class="TextoGeneral" align="CENTER" border="0" cellpadding="2" cellspacing="2" width="100%"> <tbody><tr class="TextoGeneralRojomedium"> <td colspan="6"><b> </b></td> </tr> <tr> <td class="FormTitulo" align="CENTER" width="8%">Remover</td> <td class="FormTitulo" align="CENTER" width="8%">Cantidad</td> <td class="FormTitulo" align="LEFT" width="25%"> Descripción del Producto</td> <td class="FormTitulo" align="CENTER" width="15%">ID Producto</td> <td class="FormTitulo" align="CENTER" width="15%">Precio Unitario</td> <td class="FormTitulo" align="CENTER" width="15%">Precio Total</td> </tr> <tr> <td class="TextoGeneralTabla" align="CENTER" width="8%"><input name="Check" value="Producto 3" type="radio"></td> <td class="TextoGeneralTabla" align="CENTER" width="8%"><input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto0" value="7" type="text"></td> <td class="TextoGeneralTabla" align="CENTER" width="25%">Producto 3</td> <td class="TextoGeneralTabla" align="CENTER" width="15%">-</td> <td class="TextoGeneralTabla" align="RIGHT" width="15%"> $ <input name="TipoMonedaProducto 3" value="1" type="hidden"> 89,076.00 </td> <td class="TextoGeneralTabla" align="RIGHT" width="15%"> $ 623,532.00 </td> </tr> <tr> <td class="TextoGeneralTabla" align="CENTER" width="8%"><input name="Check" value="Producto 2" type="radio"></td> <td class="TextoGeneralTabla" align="CENTER" width="8%"><input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="6" type="text"></td> <td class="TextoGeneralTabla" align="CENTER" width="25%">Producto 2</td> <td class="TextoGeneralTabla" align="CENTER" width="15%">-</td> <td class="TextoGeneralTabla" align="RIGHT" width="15%"> $ <input name="TipoMonedaProducto 2" value="1" type="hidden"> 700.00 </td> <td class="TextoGeneralTabla" align="RIGHT" width="15%"> $ 4,200.00 </td> </tr> <tr> <td colspan="5" class="TextoGeneralTabla" align="RIGHT" width="55%"><b>Total </b></td> <td class="TextoGeneralTabla" align="right" width="15%"><b> $ 627,732.00 </b></td> </tr> </tbody></table>'; $html = str_get_html($str); //o tambien puedes $html = file_get_html('http://www.tupagina.com/') foreach($html->find('input[onkeypress=SoloNumerico();]') as $element) echo $element->value .'<br>'; echo $html->find('td[class=TextoGeneralTabla]', -1)->plaintext; ?>
Resultado:
|
|
« Última modificación: 20 Noviembre 2011, 19:25 pm por h3ct0r »
|
En línea
|
[img[/img]
|
|
|
WHK
|
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. 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 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
Mensajes: 108
Hail to the king baby!
|
Si, consume mas! jejeje 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]
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Extraer codigo fuente de pagina.
PHP
|
HadesDark
|
2
|
4,318
|
13 Agosto 2007, 15:39 pm
por yeikos
|
|
|
Extraer un swf oculto de una pagina.
Dudas Generales
|
Gusney09
|
9
|
6,552
|
11 Noviembre 2011, 19:35 pm
por Gusney09
|
|
|
Extraer Base de Datos de página web
Dudas Generales
|
chuecorl
|
4
|
22,712
|
4 Septiembre 2013, 22:18 pm
por chuecorl
|
|
|
Extraer base de datos de una página Web
Dudas Generales
|
ortizjp
|
2
|
3,670
|
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
|
20 Agosto 2021, 21:46 pm
por viprin
|
|