![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#11
|
||||
|
||||
|
Hola,
Sin demérito del resto de aportaciones de los compañeros, me gustaría añadir una que he preparado. Creo que en este caso que nos ocupa no nos vendría mal utilizar las conocidas Expresiones regulares, y, para Delphi, existe un componente de nombre TPerlRegExp que nos viene al pelo. Es un componente que utilizan proyectos como SynEdit, de código abierto, gratuito y que va muy bien. Una vez contemos con el componente TPerlRegExp, que no tendremos ni que instalar para lo que nos ocupa, pienso en utilizar el componente TIdHttp para la descarga del código HTML de las páginas Web que nos interesan. Creo que ya todos sabéis de qué componente estoy hablando, así que paso adelante. He subido una página Web que he subido a mi espacio en el ClubDelphi para que nos sirva a modo de pruebas. La URL de esta página es esta: http://dec.clubdelphi.com/temporales...as-regexp.html No contiene sino el código HTML de una página de estos mismos Foros, a la que he "infiltrado" el "textarea" que habremos de localizar... ![]() A modo de prueba he creado un procedimiento que se encarga de descargar el código HTML de la página susomentada y de localizar los resultados obtenidos de la búsqueda en el código HTML de la expresión regular de marras. Este es el procedimiento que digo:
Utilizando la magia del componente TPerlRegEx y mis pocos conocimientos de la sintaxis de las Expresiones Regulares, podemos conseguir resultados muy curiosos con el procedimiento anterior. Por ejemplo, vamos a localizar si más el contenido del "textarea" que infiltramos en el código HTML de la página de ejemplo: Código:
procedure TForm1.btnBuscarClick(Sender: TObject); const expRegular = '<textarea name="algo">(.*)</textarea>'; sURL= 'http://dec.clubdelphi.com/temporales/pruebas-regexp.html'; var resultados: TStrings; begin resultados := TStringList.Create; Busqueda(sURL, expRegular, resultados); ShowMessage(resultados.Text); resultados.Free; end; Ahora entramos un poco en la magia que digo tiene el componente TPerlRegEx y las propias Expresiones Regulares, claro está. En el ejemplo anterior buscábamos un "textarea" cuyo atributo "name" fuera "algo". Con esto ya debería ir bien, es decir, podría servirnos para lo que nos ocupa. Empero, un sencillo cambio en la expresión regular que hemos utilizado antes y podríamos obtener otros resultados, por ejemplo: Código:
procedure TForm1.btnBuscarClick(Sender: TObject); const expRegular = '<textarea name="(.*)">(.*)</textarea>'; // ó expRegular = '<textarea name="algo">(.*)</textarea>'; sURL= 'http://dec.clubdelphi.com/temporales/pruebas-regexp.html'; var resultados: TStrings; begin resultados := TStringList.Create; Busqueda(sURL, expRegular, resultados); ShowMessage(resultados.Text); resultados.Free; end; Vale. Reconozco que me he entusiasmado con la posibilidad de lograr múltiples resultados, etc., pero, ya digo que para lo que nos ocupa no es necesario. Tan sólo trataba de transmitir cierto intererés en todo esto que hablamos: Expresiones Regulares, el componente "TPerlRegEx", etc. Para lo nuestro incluso podríamos dejar el procedimiento presentado al principio de este modo:
Y así sólo se buscaría la primera coincidencia de lo que buscamos en el código HTML en que lo hacemos. Pero, a riesgo de ser pesado, quiero hacer notar que, aún así, podríamos seguir utilizando el poder que nos ofrecen las Expresiones Regulares... Pero, me parece que ya está bien, porque además me he limitado ha hacer algunas pruebas, y se me escapan muchas cosas de las Expresiones Regulares, y ni el componente "TPerlRegEx" conozco medianamente bien. ¡Vosotros hacedme el caso justo y aquí paz y después gloria! ![]() Notas: - Si no conocéis el componente TPerlRegExp no tardéis en hacerlo. ![]() - Todo lo dicho podrá mejorarse no poco, pero, supongo que una de las cosas que habría que mirar con más atención sería la posibilidad de no tener que descargar todo el código HTML de la página que nos interese, sino sólo lo necesario,... esto lo dejo caer por aquí pero, ya se ve que aporto nada más que esto, que tiene narices. ![]() Última edición por dec fecha: 17-08-2006 a las 19:26:20. |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Descargar Formulario | monicasierrar | OOP | 8 | 29-09-2005 18:25:25 |
| Descargar DBE | brandolin | Conexión con bases de datos | 4 | 15-05-2004 03:07:21 |
| Descargar correo | pepe2000 | Internet | 1 | 17-02-2004 15:54:40 |
| descargar una extencion | migueilichenco | Internet | 1 | 28-11-2003 21:23:50 |
| Descargar Firebird.. | LucasArgentino | Tablas planas | 1 | 17-11-2003 14:58:04 |
|