Por que no te funciona?? Pues porque no te has fijado en el código
. Simplemente eso.
Has cambiado muy poco el código, pero no lo has hecho bien.
La función _StringBetween si no falla en su búsqueda, devuelve un array con los string que haya encontrado. Ya te dije que lo analizases y mirases la ayuda
.
Tendrías que devolver $mensaje[0].
Otra cosas, si $mensaje te devuelve 0 es que ha fallado en su búsqueda. He estado probando los links de la página y fallan muchas veces. Incluso muchas veces me cargaba mal la página principal. Creo que esa página no va muy bien
. O yo no puedo acceder bien desde mi ordenado
. Pero si tú me dices que $mensaje te da muchas veces 0 malo, mira que se carge bien el link.
Otra cosa, no hace falta cargar varias veces la página de los enlaces. Esto hace perder mucho tiempo, poner más código innecesario y cargar más la conexión. Si vas ha trabajar varias veces con la misma web cargala solamente una vez
.
Para conseguir el título de la página web puedes utilizar _IEPropertyGet($oIE,"title"). Como ves, esto de ahorra mucho código
.
He hecho una pequeña adaptación a tu código. A mi no me va bien porque como te he comentado los links apenas se me cargan. Pero supongo que si se cargasen iría bien:
Código: Seleccionar todo
#include <INET.au3>
#include <IE.au3>
#include <String.au3>
;Defino el host:
Dim $host = "http://rss.taringa.net/Taringa/ultimos-post" ; Url del canal RSS de taringa que contiene los 21 nuevos post
;lanzo la funcion:
getlinks($host)
;Defino las funciones
Func getlinks($host)
$var = _INetGetSource($host) ; Obtengo el codigo fuente del canal rss (que viene a ser un archivo XML)
$array = StringRegExp($var, '<(?i)link>(.*?)</(?i)link>', 3, 3); Leo el contenido dentro de los valores <link></link>
$TotalLinks=UBound($array) - 1
for $i = 2 to $TotalLinks ;Empiezo por el dos para comenzar a leer los titulos de los post evitando el titulo de la pagina y cabecera
TrayTip("Obteniendo datos","Link "& $i-1 &" de " & $TotalLinks-1 ,1,1)
Sleep(100)
$oIE = _IECreate($array[$i],0,0); creo la pagina, ya que la url debe redirigirnos a otra distinta, de la cual debemos obtener el codigo html
$html = _IEDocReadHTML($oIE);Obtengo el codigo html de la página
$title = _IEPropertyGet($oIE,"title") ;Obtengo el titulo de la url enviada
$mensaje=_StringBetween($html,'<span property="dc:content">','</span>');Leo dentro de estos dos marcos
If @error Then
msgbox(0,"Error en " & $array[$i],"Ha habido un error al cargar la página"); Muestro un mensaje con los datos obtenidos
Else
msgbox(0,$array[$i],"titulo:"&$title&@lf&"Cnt:"&$mensaje[0]); Muestro un mensaje con los datos obtenidos
EndIf
Next
EndFunc
Saludos.