![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Hola de nuevo Nelson.
Otra vez, gracias por tu tiempo. Entiendo ahora tus ejemplos. He reescrito el código y ahora creo que está correcto, al menos no hay advertencias ni corta en ningún momento. Este es el código completo. He hecho una prueba con este html en vez de cargar la página. Código:
<t>115451</t><t>fgfdgdfg<dfg/tdfdsf>fdgfdnkjghrehiu4yi5yuihgfjdrgjkbdfnjgkndfjkngjkndfkjgnkjdfnjkgjkdfngjkdnfjkgkjdfngh<t>45345456gdf</t><t>wwwwwwwwwwwwwwwww</t> <t>00000000</t><t>534fdgfd45345</t><t>gdfdfg</t> <t>24981vvvvvvvvv</t> <t>21f5f1eeeeeeeeee</t> <t>24981vvvvvvvvv</t> <t>21f5f1eeeeeeeeee</t> Código:
<t>115451</t> <t>115451</t> <t>115451</t> <t>115451</t> <t>115451</t> <t>115451</t> <t>115451</t> // El primer valor repetido 7 veces. No se, quizá pueda ser algo relacionado con el formato de html? Es que parece como si no incrementara el indice y parara nada mas encontrar la primera. Yo sigo probando y probando, pero si se te ocurre alguna cosa, te lo agradecería. Gracias. Última edición por nlsgarcia fecha: 11-03-2015 a las 20:15:39. Razón: Sintaxis Delphi |
|
#2
|
||||
|
||||
|
Jovalca,
Cita:
![]() Pregunto: 1- ¿Que versión de Windows utilizas?, ¿Es de 32 o 64 bits?. 2- ¿Que versión de Delphi utilizas?. 3- ¿Estas usando la librería Synapse para obtener la página web?. 4- ¿Cuales son los parámetros de búsqueda en SearchParams?. 5- ¿Cual es la página real que quieres obtener?. 6- ¿Haz realizado un Debug a tu aplicación para verificar su funcionamiento?. Espero sea útil ![]() Nelson. |
|
#3
|
|||
|
|||
|
Veamos:
Sistema operativo OS X Yosemite 64 bits. (Aunque he probado la aplicacion en windows 7 32 bits y tengo el mismo problema). Lazarus 1.4.0 RC2. Si, uso la libreria synapse. Los parametros de busqueda, cualquiera, es una cadena de texto. Por ejemplo, music. Intento obtener resultados de mp3juices.to No, aun no he realizado un debug, aunque todo parece correcto. Gracias otra vez. |
|
#4
|
||||
|
||||
|
Hola Jovalca
Cita:
Código:
<t>115451</t> Código:
115451 ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#5
|
|||
|
|||
|
Hola ecfisa.
Ante todo, gracias por tu respuesta. En principio, me gustaria que las lineas extraídas mostraran tambien las etiquetas, es decir: Código:
<tag> TEXTO </tag> Crees que el fallo puede estar en la función de extraer? Gracias de nuevo. |
|
#6
|
||||
|
||||
|
Hola Jovalca.
Yo creo que si, fijate de este modo: Código:
...
uses StrUtils;
procedure ExtractText(const Tag, Text: string; TS: TStrings);
var
p1, p2: Integer;
sufijo, prefijo: string;
begin
sufijo := '<' + Tag;
prefijo:= '</' + Tag + '>';
p1:= Pos(sufijo, Text);
repeat
p2:= PosEx(prefijo, Text, p1 + 1);
if p2 > p1 then
TS.Add(Copy(Text, p1, p2 - p1 + Length(prefijo)));
p1:= PosEx(sufijo, Text, p2);
until p1 < p2;
end;
Código:
procedure TForm1.Button1Click(Sender: TObject);
var
s: AnsiString;
begin
s:= '<t>115451</t>'+
'<t>fgfdgdfg<dfg/tdfdsf>fdgfdnkjghrehiu4yi5yuihgfjdrgjkbdfnjgkndfjkngjkndfkjgnkjdfnjkgjkdfngjkdnfjkgkjdfngh<t>45345456gdf</t>'+
'<t>wwwwwwwwwwwwwwwww<1/t>'+
'<t>00000000</t>'+
'<t>534fdgfd45345</t>'+
'<t>gdfdfg</t>'+
'<t>24981vvvvvvvvv</t>'+
' <t>21f5f1eeeeeeeeee</t>'+
'<t>24981vvvvvvvvv</t> <t>21f5f1eeeeeeeeee</t>';
Memo1.Clear;
ExtractText('t', s, Memo1.Lines);
end;
![]() Saludos ![]() Nota: Usé etiquetas code para evitar la desaparición de texto por las secuencias <t>, </t>.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 13-03-2015 a las 09:27:46. Razón: quitar comentario |
|
#7
|
|||
|
|||
|
Gracias ecfisa por tu respuesta.
La he probado y ahora si que devuelve todos los resultados. Si que había pensado en meter el bucle en la función a ver si hacía algo, pero entre probar y no probar cosas al final se me pasó. Gracias por tu tiempo y tu ayuda. Lo que me ocurre ahora es que este "filtro" para obtener etiquetas, le tengo que aplicar varias veces con distintas etiquetas, para ir quedándome sólo con el código que me interesa. Lo que ocurre es que según le voy aplicando, los resultados cada vez son menos coherentes y extrae junto con las etiquetas que necesito, otras tantas que no debería y en una ordenación confusa. Lo que creo que ocurre es que cuando la cadena de texto está bien separadas por lineas, funciona bien. Pero en cambio, el código fuente de las paginas que obtengo, va con etiquetas que se abren y cierran en lineas distintas y por decirlo de alguna manera, está todo mezclado. Voy a ver si consigo hacer una función que recorra el texto completo del código fuente, haciendo saltos de linea en cada cierre de etiqueta, es decir ">" para así tener en cada línea una etiqueta y a ver si con esto obtengo unos resultados mejores. Gracias de nuevo por tu tiempo. Saludos. |
|
#8
|
|||
|
|||
|
Hola de nuevo.
He estado probando a hacer lo que comentaba en el mensaje anterior (hacer salto de linea en cada ">"), puesto que el código fuente que obtengo viene de esta forma y no creo que sea adecuado para manipularlo en un TStringList: Código:
<!DOCTYPE html><html><head><meta charset="utf-8" /><title>Well MP3 Download: FREE Music</title><meta name="description" content="well FREE Mp3 Download & well Songs. Download And Listen Top well Music, Songs & MP3s. Download well With MP3 search for Top Songs and Music." /><meta name="keywords" content="well mp3, well download, free music" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta name="author" content="MP3Juices" /><link rel="shortcut icon" type="image/x-icon" href="http://mp3juices.to/favicon.ico"><link rel="stylesheet" type="text/css" href="http://static.mp3juices.to/stylesheet.min.css" /><script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script><script type="text/javascript" src="http://static.mp3juices.to/scripts.js?wow=1"></script><script>(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,"script","//www.google-analytics.com/analytics.js","ga"); ga("create", "UA-43693247-1", "auto"); ga("send", "pageview"); </script></head><body><!-- Tag - Site-Under --><script async="true" src="//s.ad2387.com/script.js?i=876191"></script><!-- Tag - END --><!-- Tag - Top banner --><script async="true" src="//s.ad2387.com/script.js?i=876193"></script>
Pero con esto me devuelve un error "List index () out of bounds"... Si pruebo con PageSource.ToString me devuelve un error "Access Violation" También he probado con el bucle for:
Pero obtengo los mismos errores. La verdad no se si puede manipular un TStringList así y tampoco he encontrado ejemplos claros de como hacerlo. ¿Quizá debería cargar el código de otra forma? Gracias por cualquier ayuda. Saludos. |
|
#9
|
||||
|
||||
|
Hola Jovalca.
Cita:
Prueba:
Salida: ![]() Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Consulta SQL devuelve valor erroneo | satelit | SQL | 6 | 18-04-2014 19:40:59 |
| Store Procedure solo devuelve un registro | Rockin | Firebird e Interbase | 2 | 17-10-2011 18:43:31 |
| RecNo devuelve valor -1 | jandok238 | MySQL | 1 | 27-11-2009 22:01:23 |
| Uso de SUSPEND; Solo cuando el SP devuelve valores | Paoti | Firebird e Interbase | 1 | 27-05-2006 07:16:57 |
| Select Max siempre devuelve valor | FernanGil | Conexión con bases de datos | 3 | 06-10-2003 15:55:36 |
|