![]() |
Descargar parte de una web
Hola,
Necesito realizar la descarga de cierto texto de una web. Pongo un ejemplo: Tengo las url de todas las páginas que quiero descargar... http://www.fabricante-pepe.com/artic...eferencia=1000 http://www.fabricante-pepe.com/artic...eferencia=1001 http://www.fabricante-pepe.com/artic...eferencia=1002 Si cargamos una de esas supuestas urls, obtenemos una página web con mucho html, mucho texto, muchas imágenes etc... El texto que me interesa se encuentra ubicado entre dos etiquetas HTML concretas <textarea name="algo">Este es el texto que quiero capturar</textarea> ¿alguna sugerencia de cómo puedo capturar ese texto? Gracias de antemano. |
Saludos Capo!!
He estado buscando por los foros, y al principio habia visto sugerencias sobre descargar la página en local con un componente Indy HTTP, volcando ese texto a un fichero (que al igual con un WebBrowser lo puedes hacer, no estoy muy puesto en el tema) y buscando el texto escogido dentro del fichero o memo donde tengas el codigo fuente de la página. Pero luego he encontrado la palabra clave que creo que es la que necesitabas: PARSER, Dec, aquí da las pautas para encontrarlo Espero sea esto lo que buscas, yo sinceramente te lo digo, estoy out en este tema y me he limitado a buscar por los foros e investigar un poco por Delphi. Saludos |
Sabia yo que con un WebBrowser se podia hacer algo:
Colocas un webbrowser y un memo. En el evento ondocumentcomplete añades esto:
Y ya tienes el codigo fuente de la web en un memo, sólo hay que buscar las etiquetas con un "pos" y ya lo tienes. Saludos |
Seguro que usando un TWebbrowser se pueden ir recorriendo cada una de las etiquetas (aunque yo no se como ;) ), o quizá utilizando algún parser. Pero una forma sencilla de hacerlo es obtener la pagina, colocarla en un string, buscar la etiqueta textarea y copiar lo que se encuentra entre la etiqueta de apertura y de cierre. Algo así:
|
Continuando mi respuesta anterior, podemos bajar de una sola vez todos los artículos, y guardar el contenido de los textarea en archivos de texto:
|
Bicho gracias por la respuesta, no es ese el camino pero se agradece, por cierto, aparcar está tirao ;)
Seoane funciona perfectamente, muchas gracias por tu rápida y eficaz respuesta. |
La intención es lo que cuenta no??
Por cierto como va la tienda? cuanto le queda para abrir?? Ya se ha escogido nombre? (Aunque supongo que no se dirá hasta la inauguración no?) Saludos |
Cita:
Saludos. |
Encantado de ser útil, aquí estoy para lo que necesites Emilio :)
|
Cita:
Cita:
Cita:
Como solicité en su momento ideas para el nombre de la tienda, creo que debo decir cual se ha puesto en el hilo que inicié en la taberna, así que me voy pa la taberna a desvelar el nombrecito y a tomarme una birrita :D |
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); 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); 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! :eek: :) :D 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. :D |
Bueno, ¿y es forzoso que sea en Delphi? Digo, porque en php es un "poquito" más fácil:
Código PHP:
|
Cita:
|
Y no hay razones para no usarlas en Delphi!
http://regexpstudio.com/TRegExpr/TRegExpr.html Otro camino es usar un parser de html, ya sabemos que el html puede ser invalido asi que necesitarias buscar un tag parser... |
Cita:
// Saludos |
Hola,
Cita:
Cita:
|
Cita:
Bicho: rectifico, lamento no haberme fijado mejor. Muy pocas veces hago uso del foro para emitir preguntas y realmente estoy sorprendido de la cantidad de respuestas válidas que he obtenido, seguramente alguna vez habéis preguntado estando en una ciudad desconocida por una calle y el nativo no sólo se ha limitado en indicarte el trayecto sino que además se ha tomado la molestia de acompañarte para que no te pierdas, pues algo así creo estar sintiendo, INCREIBLE, gracias a todos :) Bueno pues debo decir que he puesto en práctica dos de las opciones que se ofrecen en el hilo, la de seoane y la de roman en PHP, ambas funcionan de coña y el resultado es este http://www.brico-pc.com/tienda/artic...f=VBCIMPACTOEM La web no está terminada, en breve... |
Gracias chicos por defenderme!! :cool:
Como ya dije no estoy muy puesto en tema, pero despues de haber leido las respuestas creo que una idea si estaba dando por lo menos relacionada.. Emilio me has hecho dañoo :( Es coña, no pasa nada :D Un saludo a todos y vamos a ver que hay en la tienda virtual. Por cierto no tendrás o podrías conseguir este procesador: :p AMD socket AM2 de 64bits 3800+ dual-core, que es lo que me esta jorobando el verano... :mad: |
Cita:
Cita:
http://www.brico-pc.com/tienda/artic...AMD3800/AM2BOX Aquí tienes unos cuantos similares. |
Cita:
Los otros son un socket anterior al AM2 i me interesa ahora mismo el nuevo. Gracias de todos modos. Saludos Edito: he visto que en la foto, si pone que sea dual-core, así que si la foto no engaña es el que busco |
La franja horaria es GMT +2. Ahora son las 07:21:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi