|
Página 1 de 1
|
Comprobar La Existencia De Un Archivo En Internet
Autor |
Mensaje |
4octavio4
Programador
Registrado: Noviembre 2009
Mensajes: 100
Edad: 31 Ubicación:
|
Comprobar La Existencia De Un Archivo En Internet
Con wget sé que es fácil descargar un archivo cualquiera de Internet. Pero, ¿qué ocurre cuándo no sabes de antemano cuantos archivos tendrás que descargarte ni si existirán en el servidor?
Imaginemos unos archivos en un servidor con un patrón tipo "archivo1, archivo2, archivo3...". Lo que quiero es que el programa de una lista de los archivos disponibles al usuario antes de descargárselos, para luego dar la opción de descargar el que sea.
|
#1 Martes, 15 Marzo 2011, 17:06 |
|
|
netking86
Técnico Programador
Registrado: Septiembre 2009
Mensajes: 159
Edad: 38 Ubicación: Málaga
|
Re: Comprobar La Existencia De Un Archivo En Internet
Hola
No estoy seguro pero para disponer de esa lista necesitarías conectarte por FTP o algo similar (que alguien me corrija si me equivoco, es probable).
=================== Proyecto Open Media Manager -> http://www.OpenMediaManager.com
|
#2 Martes, 15 Marzo 2011, 17:20 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Comprobar La Existencia De Un Archivo En Internet
Octavio4 entiendo que esos archivos son enlaces (lo digo por que sean fácilmente reconocibles=
Pues es tan simple como bajar el código de la página web, buscar todos los href y quedarse con el string correspondiente.
Pongamos una funcion que recibe una url y debe devolver una lisat con esos archivos
private Enlaces as new string[] 'aquí estarán todos los enlaces que encuentres
public sub Enlaces(Url as string)
Dim F as strimg=temp() 'obtener el nombre de un archivo temporal
Dim Fuente as string
dim Continuar as boolean=true
'obtener el código fuente de la url y dejarlo en el archivo temporal F
shell ("wget " & url & " -o " & F)
'Cargar el código fuente en un string
Fuente=file.load(F)
'borrar el archivo temporal. El código está en el string fuente
kill F
'Ahora buscar en ese string todas las ocurrencias "<a href"
do whle continuar
Continuar=BuscarHRef()
loop
'Los enlaces encontrados están en el array enlaces definido anteriormente
end
Ahora que queda buscar en un string los enlaces.
Para buscarlos quizá te sea conveniente instr(cadena, "<a href") que te devuelve la posición en que encuentra un href.
Para saber donde termina quizá te venga bien buscar instr(cadena, "/a>" que es donde termina el href.
Cada vez que encuentres alguno la función debe añadir a Enlaces y devolver el valor true. Cuando llegues al final del archivo devuelves el valor false.
Esa es la idea ¡A currar!
última edición por soplo el Martes, 15 Marzo 2011, 19:21; editado 1 vez
|
#3 Martes, 15 Marzo 2011, 19:17 |
|
|
4octavio4
Programador
Registrado: Noviembre 2009
Mensajes: 100
Edad: 31 Ubicación:
|
Re: Comprobar La Existencia De Un Archivo En Internet
A lo mejor te he entendido yo mal, pero creo que eso no es lo que necesito. A lo mejor me he explicado mal, voy a ampliarlo un poco más.
Imaginemos que en una web, que llamaré "www.prueba.com" tengo los siguientes archivos:
www.prueba.com/archivo1.jpg
www.prueba.com/archivo2.jpg
www.prueba.com/archivo3.jpg
Como vemos los archivos siguen un patrón y no sería difícil descargarlos todos con algún bucle.
Pero lo que yo quiero hacer es un poco distinto. Necesito que el programa muestre una lista de esos archivos y que el usuario elija lo que quiere descargarse. Para eso necesitaría alguna forma de saber hasta que número hay archivos. En este caso sólo es hasta el 3, así que el programa debería mostrar esos tres y ninguno más. No sé si hay alguna función similar al Exist para los archivos locales, pero usándolo para archivos remotos.
Espero que me haya explicado bien.
|
#4 Martes, 15 Marzo 2011, 22:44 |
|
|
4octavio4
Programador
Registrado: Noviembre 2009
Mensajes: 100
Edad: 31 Ubicación:
|
Re: Comprobar La Existencia De Un Archivo En Internet
Contestándome a mí mismo, me estoy fijando en el código http que da wget al comenzar la descarga. 200 en caso de que se pueda descargar y 404 en caso de que no exista. Estoy buscando formas de obtener el dato de forma sencilla y sin necesidad de descargar todos y cada uno de los archivos. ¿Alguna idea?
|
#5 Miercoles, 16 Marzo 2011, 01:39 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Comprobar La Existencia De Un Archivo En Internet
Hace tiempo que tengo más o menos tu problema, ya había revisado el manual de wget (man wget) pero en ese entonces no había encontrado la respuesta. Pero ahorita checando de nuevo el manual encontré la opción adecuada:
Citar: --spider
When invoked with this option, Wget will behave as a Web spider,
which means that it will not download the pages, just check that
they are there. For example, you can use Wget to check your
bookmarks:
wget --spider --force-html -i bookmarks.html
This feature needs much more work for Wget to get close to the
functionality of real web spiders.
También resulta interesante la opción --server-response que te entrega más info sobre el fichero o página a descargar:
Citar:
-S
--server-response
Print the headers sent by HTTP servers and responses sent by FTP
servers.
$ wget --server-response --spider www.prueba.com/archivo3.jpg
Saludos!
|
#6 Miercoles, 16 Marzo 2011, 02:55 |
|
|
4octavio4
Programador
Registrado: Noviembre 2009
Mensajes: 100
Edad: 31 Ubicación:
|
Re: Comprobar La Existencia De Un Archivo En Internet
Hace tiempo que tengo más o menos tu problema, ya había revisado el manual de wget (man wget) pero en ese entonces no había encontrado la respuesta. Pero ahorita checando de nuevo el manual encontré la opción adecuada:
Citar: --spider
When invoked with this option, Wget will behave as a Web spider,
which means that it will not download the pages, just check that
they are there. For example, you can use Wget to check your
bookmarks:
wget --spider --force-html -i bookmarks.html
This feature needs much more work for Wget to get close to the
functionality of real web spiders.
También resulta interesante la opción --server-response que te entrega más info sobre el fichero o página a descargar:
Citar:
-S
--server-response
Print the headers sent by HTTP servers and responses sent by FTP
servers.
$ wget --server-response --spider www.prueba.com/archivo3.jpg
Saludos!
Perfecto, es justo lo que necesitaba. Gracias.
Wget responde de alguna forma o tengo que analizar el texto que sale?
última edición por 4octavio4 el Miercoles, 16 Marzo 2011, 12:58; editado 1 vez
|
#7 Miercoles, 16 Marzo 2011, 12:47 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|