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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  extraer datos de pagina con file_get_contents
0 Usuarios y 1 Visitante 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,545 veces)
kanser

Desconectado Desconectado

Mensajes: 34


XD kanzer


Ver Perfil WWW
extraer datos de pagina con file_get_contents
« en: 17 Noviembre 2011, 08:27 am »

hola tengo que extraer datos de una pagina web

quiero extraer contenido del archivo con file_get_contents.

Luego, cortar el contenido con combinaciones de substr/strpos pero no se como hacerle
y el contenido cortado pues ya lo meto en variables para su uso

Código:
	<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%">&nbsp;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&nbsp;&nbsp;&nbsp;</td>

<td class="TextoGeneralTabla" align="RIGHT" width="15%">


$
623,532.00&nbsp;&nbsp;&nbsp;</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&nbsp;&nbsp;&nbsp;</td>

<td class="TextoGeneralTabla" align="RIGHT" width="15%">

$
4,200.00&nbsp;&nbsp;&nbsp;</td>

</tr>
<tr>

<td colspan="5" class="TextoGeneralTabla" align="RIGHT" width="55%"><b>Total&nbsp;&nbsp;&nbsp;</b></td>
<td class="TextoGeneralTabla" align="right" width="15%"><b>

$
627,732.00&nbsp;&nbsp;&nbsp;</b></td>

</tr>
</tbody></table>

de aqui de este codigo me gustaria extraer el 7 de
Código:
<input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto0" value="7" type="text">

el 6 de
Código:
<input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="6" type="text">

o mejor dicho el value de cada
Código:
<input maxlength="3" onkeypress="SoloNumerico();" class="FormCasillas" size="1" name="Change120088Producto1" value="NUMERO A OBTENER" type="text">

y por ultimo 627,732.00 o el numero que este ahi
Código:
<td class="TextoGeneralTabla" align="right" width="15%"><b>

$
627,732.00&nbsp;&nbsp;&nbsp;</b></td>

no tengo ni idea por donde va pero tengo lo siguiente:

Código:
    $url = file_get_contents('url');
                $patron = '|value=(.*?)" type="text">|is';
                $extracto = '';
                if (preg_match($patron, $source, $extracto1))
                {
                    $extracto = $extracto1[1];
                }
                echo $extracto

como ven ojala ayuden con mis dudad


« Última modificación: 17 Noviembre 2011, 08:33 am por kanser » En línea

prefiero amigos que comparten lo poco que saben, que amigos que saben todo y no comparten nada
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



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

Lo que instentas hacer, es una tecnica llamada  Data Mining.

Cita de: wikipedia
La minería de datos (DM, Data Mining) consiste en la extracción no trivial de información que reside de manera implícita en los datos. Dicha información era previamente desconocida y podrá resultar útil para algún proceso. En otras palabras, la minería de datos prepara, sondea y explora los datos para sacar la información oculta en ellos.

Si vas a hacer este tipos de cosas es mejor que desde el principio pienses en dejar de utilizar substr/strpos. Para esto se utiliza Expresiones Regulares, lee sobre ello luego intenta utilizarla, si tienes alguna duda sobre las expresiones regulares te la puedo contestar.

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.
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: extraer datos de pagina con file_get_contents
« Respuesta #2 en: 17 Noviembre 2011, 16:29 pm »

O puedes parsear HTML con alguna librería.

Parsear HTML con PHP – Simple HTML DOM Parser


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



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

O puedes parsear HTML con alguna librería.

Parsear HTML con PHP – Simple HTML DOM Parser

Quizás pero no creo que sea el mejor método aunque quizás es mucho mas fácil que intentar entender las expresiones regulares, bueno la librería también utiliza expresiones regulares para poder parsear el código HTML.

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 #4 en: 17 Noviembre 2011, 19:51 pm »

Es una mejor idea usar ya de facto un parseador de HTML que ya tenga las rutinas mas optimas y las mejores expresiones regulares para realizar esa accion.

Y de ahi solo tomas los datos que necesites y los validas segun tus requerimientos.

Eso es mas comodo, optimo y seguro que crearte miles de expresiones regulares con las que vas a tener que validar muchisimas variantes si esperas que ese texto cambie su formato con regularidad.

De todas maneras por ahi hay tutoriales de exp regulares, es algo muy sencillo de aprender y generalmente util, pero hay que saber cuando usarlas y cuando no.
En línea

[img[/img]
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: extraer datos de pagina con file_get_contents
« Respuesta #5 en: 18 Noviembre 2011, 13:40 pm »

@h3ct0r en realidad estas equivocado si usas dicho parser puede estar perdiendo performance innecesario, con un solo patrón se puede capturar todo los datos que dice @kanser.

Un parseador de HTML que ya tenga las rutinas mas optimas y las mejores expresiones regulares para realizar esa accion.

Las mejores expresiones regulares es muy dudoso, hay muchas formas de realizar un patrón que realice lo mismo pero la diferencia es que algunas tienen mucho mas eficientes que otras. También tienes que validar correctamente el texto xD.

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 #6 en: 18 Noviembre 2011, 16:39 pm »

Hay que realizar siempre acciones que tengan escalabilidad rapida y eficiente. Hacer microoptimizaciones totalmente dependientes de una sola estructura de datos no es siempre la mejor idea.

En cambio, tomar un parser bueno y comprobado por la comunidad como un producto de calidad, es mucho mejor que empezar a filtrar el texto con expresiones regulares propias una a una.

Imaginate si se anaden mas lineas de texto o si se cambian de posicion las etiquetas con algun espacio o letra de mas, ya con una expresion regular comun tendrias problemas si no calculaste esas variantes, con el parser HTML ya no tanto.

Hay que ver tambien el caso de que generalmente se quieran buscar mas datos, tendria que hacer mas expresiones regulares y leer linea por linea igual. Yo preferiria tener todo ese HTML dentro de una estructura de datos que me permita buscar facilmente cualquier informacion una vez parseada.

Aunque tu punto de vista es valido. Si solo se va a buscar esa pequena cantidad de texto y se sabe que sera solo esa en un futuro, usar solo expresion regular con lectura linea a linea del texto no va a tener problema. :xD

Y hay que validar el texto!
Y de ahi solo tomas los datos que necesites y los validas segun tus requerimientos.
En línea

[img[/img]
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



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

A todas las opciones que dijiste, a todo eso yo puedo hacerlo con 1 sola expresión regular,puedo hacer lo que haces con 10 expresiones regulares hacerlo con solo 1, puede que sea 10 o mas veces que el texto pueda variar. No lo digo porque sea el mejor con expresiones regulares o porque haga magia, sino porque todo eso es posible hacerlo con solo 1 expresión regular.

Buscas acciones rápida, entonce haz todo con una sola expresión regular y ahorrate tiempo en buscar algún parser y luego leer la documentación.

Desde 1 expresión regular, puedes filtrar, capturar, reemplazar,verificar y hasta hacer que el patrón tome diferente decisiones en diferente casos.

Lo que te lo digo te lo digo a base de experiencia, tengo años parseando datos ya que suelo crear App para sitios y mucho de ellos no tienen una API y tengo que hacer todo manualmente.

En varios proyectos he utilizado librerías pero todas son miás exceptos algunas que no necesariamente si la realizo la haré mejor porque dará lo mismo. La razón es porque es lo que busco exactamente y lo haría exactamente igual si no la usara.

Igual estoy en contra de re-inventar la rueda pero aveces es mucho mejor reinventar la rueda como dicen (no estoy seguro que es exactamente asi xD): Solo vale la pena re-inventar la ruedas para hacer ruedas mejores.

Saludos.
« Última modificación: 18 Noviembre 2011, 19:47 pm por ~ Yoya ~ » 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 #8 en: 19 Noviembre 2011, 05:53 am »

Deberias hacer un tutorial de regexp aver que tal, en php o en el lenguaje que tu quieras.

No creo que realmente puedas hacer todo lo que yo te dije con una sola expresion regular sin hacer un mounstro gigante complicado y probablemente dificil de hacer mantenimiento. (Que es algo que hay que tomar en cuenta cuando se trabaja en equipo, en algun proyecto serio, con vias a escalabilidad).

Yo tambien hago bastante data mining y te digo, entre una optimizacion pequena vs mantenimiento entendible y comodo, escojo el mantenimiento.

Y hay viene el mismo tema de las microoptimizaciones, mi recomendacion es el parser.

Mis 2 centavos.
En línea

[img[/img]
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



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

Ps como te dije, lo puedo hacer porque es posible.

Todo lo que haces con el parser lo puedes hacer con expresiones regulares pero no todo lo que haces con expresiones regulares lo puedes hacer con el parser.

No hay ningún monstruo complicado ni gigante si entiendes cada parte.

Igual no se pierde tiempo creando un patron, si tienes experiencia sabrás como hacerlo desde el primer instante.

Con el tema de microoptimizaciones lol, supongo que sera cuando vez algún framework lo ultimo que te interesas es el rendimiento de este xD. No sabes la cantidad de PC viejas que utilizan muchas personas como server y reciben miles de visitas diarias y de esas "microoptimizaciones" hace que el servidor no se sobre-carge.

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.
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,324 Último mensaje 13 Agosto 2007, 15:39 pm
por yeikos
Extraer un swf oculto de una pagina.
Dudas Generales
Gusney09 9 6,556 Último mensaje 11 Noviembre 2011, 19:35 pm
por Gusney09
Extraer Base de Datos de página web
Dudas Generales
chuecorl 4 22,725 Último mensaje 4 Septiembre 2013, 22:18 pm
por chuecorl
Extraer base de datos de una página Web
Dudas Generales
ortizjp 2 3,675 Ú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,871 Último mensaje 20 Agosto 2021, 21:46 pm
por viprin
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines