Página 1 de 1

Identificar valor de etiquetas

Publicado: 05 May 2011, 13:10
por chechu
Hola Chicos.

Una duda.

Tengo el html

Código: Seleccionar todo

</HEAD>
<FRAMESET frameSpacing=0 rows=56,* frameBorder=0 cols=*>
<FRAME name=arriba marginWidth=0 frameSpacing=0 marginHeight=0 src="/SETWEB/jsp/SetWeb/menu/arriba.jsp?JSESSIONID=X4SlN47h!-214520295" frameBorder=0 scrolling=no>
<FRAMESET frameSpacing=0 frameBorder=0 cols=151,*>
<FRAMESET rows="20,*,20 framespacing=" frameBorder=0 0?><FRAME name=izquierda1 marginWidth=0 frameSpacing=0 marginHeight=0 src="/SETWEB/html/SetWeb/izquierda1.htm" frameBorder=0 scrolling=no><FRAME name=menu marginWidth=0 frameSpacing=0 marginHeight=0 src="/SETWEB/jsp/SetWeb/menu/menu.jsp?JSESSIONID=X4SlN47h!-214520295" frameBorder=0 scrolling=no>
<FRAME name=izquierda2 marginWidth=0 frameSpacing=0 marginHeight=0 src="/SETWEB/html/SetWeb/izquierda2.htm" frameBorder=0 scrolling=no>
</FRAMESET>
<FRAME name=centro marginWidth=0 frameSpacing=0 marginHeight=0 src="/SETWEB/jsp/SetWeb/menu/marco.jsp?JSESSIONID=X4SlN47h!-214520295" frameBorder=0 scrolling=yes>
</FRAMESET>
</FRAMESET>
</HTML>
¿podemos pasar a una variable el valor de las etiquetas src?

La alternativa que se me ocurre es mediante el uso de cadenas de texto (q es muy cutre y que además si varía el html, se fastidia el invento)

$oIE = _IEAttach ("PaginaIn - Microsoft Internet Explorer", "Windowtitle",1)
$texto_html = _IEDocReadHTML ($oIE)
Msgbox (0,"información html", $texto_html)
$inicio = StringInStr($texto_html, "src", 0, 3) ;tomo la tercera ocurrencia
$parte_texto = StringMid ($texto_html, $inicio, 63 ) ;63 es el número de caracteres con el valor src
Msgbox (0,"info", $parte_texto)


He buscado la ayuda y aparece el ejemplo
#include <IE.au3>
$oIE = _IEAttach ("PaginaIn - Microsoft Internet Explorer", "Windowtitle",1)
$oElements = _IETagNameAllGetCollection ($oIE)
For $oElement In $oElements
MsgBox(0, "Element Info", "Tagname: " & $oElement.tagname & @CR & "innerText: " & $oElement.innerText)
Next

pero así no me identifica las etiquetas src...

Bueno gracias como siempre por la ayuda :smt003
Un saludo,

Re: Identificar valor de etiquetas

Publicado: 05 May 2011, 16:16
por jamaro
Hola chechu:

Últimamente estoy haciendo uso de StringRegExp para recoger datos de páginas web.

Mira a ver si te satisface el resultado con:

StringRegExp(TEXTO_HTML,src="(.*?)",3)

que devuelve una matriz con los siguientes datos:

0 => /SETWEB/jsp/SetWeb/menu/arriba.jsp?JSESSIONID=X4SlN47h!-214520295
1 => /SETWEB/html/SetWeb/izquierda1.htm
2 => /SETWEB/jsp/SetWeb/menu/menu.jsp?JSESSIONID=X4SlN47h!-214520295
3 => /SETWEB/html/SetWeb/izquierda2.htm
4 => /SETWEB/jsp/SetWeb/menu/marco.jsp?JSESSIONID=X4SlN47h!-214520295


(Como he comentado en otros mensajes, para el uso y práctica con StringRegExp recomiendo StringRegExp Original Design GUI que puedes encontrar en el foro inglés).

Saludos

Re: Identificar valor de etiquetas

Publicado: 05 May 2011, 18:12
por chechu
Gracias por tu respuesta jamaro. Lo miraré a ver

Investigando más sobre el asunto, es lógico que no encuentre src con _IETagNameAllGetCollection, pues src no es un TAG...
Como venga chefito por aquí me regaña jaja

En cualquier caso me parece raro que con las funciones _IE no se pueda hacer...

Re: Identificar valor de etiquetas

Publicado: 05 May 2011, 22:44
por Chefito
chechu escribió:Investigando más sobre el asunto, es lógico que no encuentre src con _IETagNameAllGetCollection, pues src no es un TAG... Como venga chefito por aquí me regaña jaja
Pues sí, es para regañarte :smt005 . Los tags (etiquetas) que necesitas recuperar son los frames. Y después tienes que recuperar su propiedad src.
chechu escribió:En cualquier caso me parece raro que con las funciones _IE no se pueda hacer...
Como que no se puede hacer? Otra cosa es que no lo sepas hacer :smt002 .

Se puede hacer por ejemplo con el ejemplo de la función _IETagNameGetCollection:

Código: Seleccionar todo

#include <IE.au3>

$oIE = _IECreate("http://creatuweb.espaciolatino.com/tutorhtml/ejemplos/marcos1/tresmarcos.htm")
$oframes = _IETagNameGetCollection ($oIE, "frame")
For $oframe In $oframes
    MsgBox(0, "Frames",$oframe.src)
Next
Otra forma podría ser con el ejemplo de la función _IEFrameGetCollection y su propiedad locationurl:

Código: Seleccionar todo

#include <IE.au3>

$oIE = _IECreate("http://creatuweb.espaciolatino.com/tutorhtml/ejemplos/marcos1/tresmarcos.htm")
$oFrames = _IEFrameGetCollection ($oIE)
$iNumFrames = @extended
For $i = 0 to ($iNumFrames - 1)
    $oFrame = _IEFrameGetCollection ($oIE, $i)
    MsgBox(0, "Frame Info", _IEPropertyGet ($oFrame, "locationurl"))
Next
Muy buena idea la de jamaro, el buscar las cadena a base de una expresión. Se puede tratar el texto de varias formas (ejemplo, con la función _StringBetween) pero la forma más compacta y rápida es con expresiones.

Saludos.

Re: Identificar valor de etiquetas

Publicado: 06 May 2011, 10:27
por chechu

Código: Seleccionar todo

#include <IE.au3>

$oIE = _IECreate("http://creatuweb.espaciolatino.com/tutorhtml/ejemplos/marcos1/tresmarcos.htm")
$oframes = _IETagNameGetCollection ($oIE, "frame")
For $oframe In $oframes
    MsgBox(0, "Frames",$oframe.src)
Next
Va perfecto. Muchas Gracias


PD: Chefito no me regañes. Mira mi categoría. Soy aprendiz!! :smt003