Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alex_ps

Função que coleta links das páginas

Recommended Posts

Galera,

 

Tenho esta função, que devia apanhar os links de uma página qualquer, que primeiro eu resgato com XMLHttp.

 

Só que não rola!

 

Não sei se tô fazendo alguma coisa errada, mas só colocar na página o GetLinks(Str) não acontece nada.

 

Alguém tem alguma idéia?

 

 

'Obtém todas as tags <A> e retorna uma array de arrays com essa estrutura:'	Arr(...)(0) ->  Texto dentro da tag'	Arr(...)(1) ->  Atributo HREFFunction GetLinks(ByRef Str)	Dim i, j, k, m, n, a	Dim Links, b, Itens(1)		Links = Array()	b = -1		i = 1 : j = 1 : k = 1		Do While i > 0			i = InStr(i, Str, "<a", 1)		If i = 0 Then Exit Do				j = InStr(i, Str, ">")		If j = 0 Then Exit Do				k = InStr(j, Str, "</a>", 1)		If k = 0 Then Exit Do				n = InStr(i, Str, " href=", 1)		If n = 0 Or n > j Then Exit Do						a = Mid(Str, n + 6, 1)		If a = "'" Or a = """" Then			m = InStr(n + 7, Str, a)			If m = 0 Or m > j Then Exit Do			Itens(1) = Mid(Str, n + 7, m - (n + 7))		Else			m = InStr(n + 7, Str, " ")			If m = 0 Or m > j Then m = j			Itens(1) = Mid(Str, n + 6, m - (n + 6))		End If				Itens(0) = TrimChop(StripTags(Mid(Str, j + 1, k - (j + 1))))				b = b + 1		ReDim Preserve Links(b)		Links(b) = Itens				i = i + 1			Loop		GetLinks = Links			End Function

Sei que a variável Itens(1) é que são os links, mas só consigo usá-los dentro da função e aí é fróid.

Não estou colocando as 2 outras funções (TrimChop,StripTags) mas não tem problema, pois o (Itens(0)) pode ser desabilitado sem problemas.

 

Alguém pode ajudar?

 

Alguém tem alguma outra função desta que funcione? :nataltongue:

 

Não sei o problema está na declaração do Array, não sei se eu tenho que chamar a função em um For Lbound Ubound...

 

Valeu pela força!

 

Alex_ps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tente dar um

response.Write GetLinks(parametro)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Salgado,O Response.write num rola!Já tentei desmontar a função e usar só a parte que preciso, mas me perco na hora de fazer o array, daí eu obtenho só o último link da página. Tentei ver se o erro era no Array Itens, pois sei lá de onde ele tirou

Links(b ) = Itens

, mas como não entendo direito este papo de Array, Redim, Conserve..., tentei colocar o GetLinks acima do loop, também não deu.Sei que o problema é super baba, mas infelizmente eu sou um Mané e não consigo achar o erro. Esses benditos arrays. E o pior é que tá tudo parado por causa desta encrenca.Vamos ver se alguém tem alguma idéia.Valeu!Alex_ps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, vou dar uma forçada, troque GetLinks = Links por GetLinks = JOIN(Links," ") e faça o Response.Write.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado,Quando eu troquei para "GetLinks = JOIN(Links," ")", aparece um erro de execução na linha onde está este comando.Erro de tempo de execução do Microsoft VBScript error '800a000d' Tipos incompatíveis /uopss.asp, line 381 Não é por aí! :( Alex_ps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho, é como se "Links" não fosse um array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado,Pois é...O sujeito declarou o primeiro array em Itens(1), declarou a variável b e declarou "Links = Array()".No caso de links, eu não sei porque ele usou "=Array()" e depois continuou usando a palavra "Links". Até onde eu entendo de array, ele deveria ter declarado Links() (ou só Links, não sou bom nisto) e depois o redim, Links(B ).Só que ele faz o "Links = Array()" depois faz o redim em "Links(B )" e finaliza a função como "Links" e não como "Links(B )".A treta é só aí, na hora de preparar a função para ser chamada.O resto tá belezinha!Se eu coloco o response.write Itens(1) dentro da função, ele me dá uma cacetada de links, como deve ser.Mas do outro jeito. .. :natalsad: Obrigado pela força!Alex_ps

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.