Listar los vínculos que hay en una página web.

09/08/2009 - 18:19 por Jose | Informe spam
Saludos a todos:

Con éste código podía acceder a una página web (es la URL que tengo en
la celda "G3"):

ActiveWorkbook.FollowHyperlink Address:=Range("G3").Value,
NewWindow:=True

¿Pero sabeís si existe alguna manera de obtener una lista de los
enlaces, (vínculos), que hay en dicha página web?.

Muchas gracias.

Saludos
Jose

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
09/08/2009 - 21:06 | Informe spam
hola, Jose (javier) !

Con este codigo podia acceder a una pagina web (es la URL que tengo en la celda "G3"):
ActiveWorkbook.FollowHyperlink Address:=Range("G3").Value, NewWindow:=True
Pero sabeis si existe alguna manera de obtener una lista de los enlaces, (vinculos), que hay en dicha pagina web?...



1) con la instruccion (.followhyperlink) que expones... "podias" ??? (o puedes aun ???)

2) puedo preguntar por que o para que necesitas un listado de los enlaces/vinculos que existen en una pagina web (?)

3) para poder proponer algo que +/- pudiera ser de utilidad, considera lo siguiente:
a) necesitas obtener el "codigo fuente" de la pagina web (y algunas paginas NO permiten el acceso a su codigo fuente)
b) una vez obtenido el codigo fuente, necesitas "barrer" (escanear/buscar/...) cadenas de caracteres como "href=", "http", etc.)
c) no todas las referencias "href=" inician con "http" ya que son "sub-cadenas" con referencia vinculada a la (url) principal
d) probable o segurmente podrias encontrar otro tipo de "imponderables" por el camino (???)

4) si tus requerimientos/intenciones/... son mas especificos (o menos "generales"), podrias comentar lo mas concreto posible ?

saludos,
hector.
Respuesta Responder a este mensaje
#2 javier
09/08/2009 - 23:32 | Informe spam
Gracias Hector por responder.

Con la instrucción (.followhyperlink) puedo acceder a una página (ésta
página sí permite ver su código fuente), y en ella hay un botón que me abre
un archivo ".csv" donde hay una Tabla. Ese archivo tiene una URL
aproximadamente como ésta:

http://www.pagina.com/grafico/Chart...913218.csv

Pero de esa URL lo único que cambia es el nombre del archivo. Y cambia cada
poco tiempo. Es decir, el archivo "BER_4052799223913218.csv" a los pocos
minutos u horas puede llamarse de las siguientes formas:

BER_10582922391326.csv
BER_735279922391343.csv
BER_905630223913210.csv
BER_8051119223622595.csv
etc
etc.

Si conociera esta URL exacta, con otra instrucción (.followhyperlink)
accedería a ese archivo, y con una macro tendría facilmente los datos de la
Tabla. Lo puedo hacer manualmente pero con una macro sería más cómodo.

En realidad no necesitaba un listado de todos los vinculos que hay en esa
página (hay pocos vinculos). Si no que entre ellos encontraría facilmente la
URL del archivo ".csv" al que tendría que hacerle (.followhyperlink)


También con una instrucción como la siguiente, abriría el archivo:
Sheets("Hoja1").Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

Además de la que comenté:
ActiveWorkbook.FollowHyperlink Address:=Range("G3").Value, NewWindow:=True



Otra posibilidad es, que se pudiera abrir dicho archivo, [con
.FollowHyperlink, .Hyperlinks(1), u otra], empleando algún caracter comodin
como un asterisco * , así haría referencia a él a pesar de que su nombre sea
variable.

Yo en un celda tenía el hipervinculo así:
http://www.pagina.com/grafico/Chart...913218.csv

lo he puesto así y no me funciona:
="http://www.pagina.com/grafico/Chart...BER_" & "*" & ".csv"


o quizás con codigo, o con una variable, se pueda emplear el caracter
comodin para que reconozca una URL cuyo nombre (tipo String) es variable.


Ando pensando en varias alternativas, pero no sé cual ni cómo realizarlas.

Muchas gracias.
Un saludo
Jose
Respuesta Responder a este mensaje
#3 Héctor Miguel
10/08/2009 - 02:03 | Informe spam
hola javier (Jose), !

(hasta donde se...)
algunas busquedas "aproximadas"... podrian mandarte a donde NO es (donde querias llegar) ?????
o sea, seria bueno si expones (para los tambien mortales "de este lado" del mensaje)...
=> la URL (real) donde esta "el boton" desde el cual tienes acceso al *.csv "variable" (?)

saludos,
hector.

__ OP __
... esta pagina si permite ver su codigo fuente), y en ella hay un boton que me abre un archivo ".csv" donde hay una Tabla.
Ese archivo tiene una URL aproximadamente como esta:
http://www.pagina.com/grafico/Chart...913218.csv
Pero de esa URL lo unico que cambia es el nombre del archivo. Y cambia cada poco tiempo.
Es decir, el archivo "BER_4052799223913218.csv" a los pocos minutos u horas puede llamarse de las siguientes formas:
BER_10582922391326.csv
BER_735279922391343.csv
BER_905630223913210.csv
BER_8051119223622595.csv
etc.
Si conociera esta URL exacta, con otra instruccion (.followhyperlink) accederia a ese archivo
y con una macro tendria facilmente los datos de la Tabla. Lo puedo hacer manualmente pero con una macro seria mas comodo.
En realidad no necesitaba un listado de todos los vinculos que hay en esa pagina (hay pocos vinculos).
Si no que entre ellos encontraria facilmente la URL del archivo ".csv" al que tendria que hacerle (.followhyperlink)

Tambien con una instruccion como la siguiente, abriria el archivo:
Sheets("Hoja1").Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Ademas de la que comente:
ActiveWorkbook.FollowHyperlink Address:=Range("G3").Value, NewWindow:=True

Otra posibilidad es, que se pudiera abrir dicho archivo, [con .FollowHyperlink, .Hyperlinks(1), u otra]
empleando algun caracter comodin como un asterisco *, asi haria referencia a el a pesar de que su nombre sea variable.

Yo en un celda tenia el hipervinculo asi:
http://www.pagina.com/grafico/Chart...913218.csv
lo he puesto asi y no me funciona:
="http://www.pagina.com/grafico/Chart...BER_" & "*" & ".csv"

o quizas con codigo, o con una variable, se pueda emplear el caracter comodin
para que reconozca una URL cuyo nombre (tipo String) es variable.

Ando pensando en varias alternativas, pero no se cual ni como realizarlas.
Respuesta Responder a este mensaje
#4 Jose
10/08/2009 - 08:42 | Informe spam
Hola Hector!

En ésta página:

http://www.bestinver.es/fondoBestinfond.aspx#

hago clik en la pestaña "GRÁFICO" y se me abre una nueva ventana que
es ésta:

http://www.bestinver.es/grafico/?co...anguage=es

Esta URL la tengo en la celda "G3" y llego sin problemas con la
instrucción:

ActiveWorkbook.FollowHyperlink Address:=Range("G3").Value,
NewWindow:=True

Aquí selecciono para el gráfico "3 Meses" (es diferente el archivo que
puedo descargar si selecciono 3 meses que si lo dejo en "1 Mes"; pero
eso dá lo mismo, no me importa). Y abajo a la izquierda está el botón
"Descargar datos", con el simbolo de excel. Ahora tiene la siguiente
ruta (URL):
http://www.bestinver.es/grafico/Cha...049176.csv

pero el nombre del archivo cambia ligeramente cada poco tiempo, por lo
tanto no puedo establecer esa URL en otra celda por ejemplo "G4" para
hacer (.FollowHyperlink):
ActiveWorkbook.FollowHyperlink Address:=Range("G4").Value,
NewWindow:=True

y abrir dicho archivo. A no ser que me pudiera ayudar haciendo
referencia a ese archivo con algún caracter comodín, como un asterisco
* . Pero no sé cómo hacerlo. De éste archivo (que es el que se abre):
BESTINFOND_1993289161049176.csv, sólo va cambiando ésta parte:
"1993289161049176". El resto: "BESTINFOND_" ".csv" , es fijo.


También el nombre del archivo, "BESTINFOND_1993289161049176.csv", (no
exactamente ese nombre si no el archivo del gráfico de "1 Mes", que es
muy parecido y me sirve igualmente) está en el codigo fuente de la
página de la celda "G3" : http://www.bestinver.es/grafico/?co...nguage=es.

Pero me parece que será un poco dificil escanear o rastrear ese código
fuente para encontrar ese nombre de archivo, que me serviría para
luego abrirlo con (.FollowHyperlink)

Si se te ocurre algo
Muchas gracias
Un saludo
Jose
Respuesta Responder a este mensaje
#5 Héctor Miguel
10/08/2009 - 19:50 | Informe spam
hola, Jose !

te paso una macro que obtiene el nombre del archivo variable *.csv y la ruta (url) donde se encuentra
puedes modificar las variables (Raiz y Fuente) para que el codigo las tome de celdas

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub OrigenCSV()
Dim Raiz As String, Fuente As String, Datos, _
Ref_1 As String, Ref_2 As String, Pos
Raiz = "http://www.bestinver.es/grafico/"
Fuente = "?codfondo=2&language=es"
Ref_1 = "href=""chartimages/b"
Ref_2 = ".csv"
With CreateObject("msxml2.xmlhttp")
.Open "get", Raiz & Fuente, False: .Send
Datos = .ResponseText
End With
Pos = InStr(1, Datos, Ref_1, 1)
Datos = Mid(Datos, Pos + 6)
Datos = Left(Datos, InStr(Datos, Ref_2) + 3)
MsgBox Raiz & Datos
End Sub

__ OP __
En esta pagina: http://www.bestinver.es/fondoBestinfond.aspx#
hago clik en la pestana "GRAFICO" y se me abre una nueva ventana
que es esta: http://www.bestinver.es/grafico/?co...anguage=es
Esta URL la tengo en la celda "G3" y llego sin problemas con la instruccion:
ActiveWorkbook.FollowHyperlink Address:=Range("G3").Value, NewWindow:=True
Aqui selecciono para el gráfico "3 Meses" (es diferente el archivo que puedo descargar
si selecciono 3 meses que si lo dejo en "1 Mes"; pero eso da lo mismo, no me importa).
Y abajo a la izquierda esta el boton "Descargar datos", con el simbolo de excel.
Ahora tiene la siguiente ruta (URL): http://www.bestinver.es/grafico/Cha...049176.csv
pero el nombre del archivo cambia ligeramente cada poco tiempo, por lo tanto
no puedo establecer esa URL en otra celda por ejemplo "G4" para hacer (.FollowHyperlink): ... y abrir dicho archivo.
A no ser que me pudiera ayudar haciendo referencia a ese archivo con algun caracter comodin, como un asterisco * .
Pero no se cómo hacerlo. De este archivo (que es el que se abre): BESTINFOND_1993289161049176.csv
solo va cambiando esta parte: "1993289161049176". El resto: "BESTINFOND_" ".csv" , es fijo.
Tambien el nombre del archivo, "BESTINFOND_1993289161049176.csv"
(no exactamente ese nombre si no el archivo del gráfico de "1 Mes", que es muy parecido y me sirve igualmente)
esta en el codigo fuente de la pagina de la celda "G3": http://www.bestinver.es/grafico/?co...nguage=es.
Pero me parece que sera un poco dificil escanear o rastrear ese codigo fuente para encontrar ese nombre de archivo
que me serviría para luego abrirlo con (.FollowHyperlink) ..
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida