Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Comprobar La Existencia De Un Archivo En Internet
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
4octavio4 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 
netking86 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
4octavio4 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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?
 



 
4octavio4 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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!
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar La Existencia De Un Archivo En Internet 
 
razaAztk escribió: [Ver mensaje]
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 
4octavio4 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Saber La Existencia De Un Archivo aristicol General 3 Viernes, 18 Junio 2010, 12:14 Ver último mensaje
AnSnarkista
No hay nuevos mensajes Socket TCP/IP En Internet MiguelVelandia Aplicaciones/Fragmentos de Código 5 Jueves, 07 Octobre 2010, 12:37 Ver último mensaje
jose2190
No hay nuevos mensajes Comprobar La Conexión A Internet bies88 General 1 Sabado, 19 Febrero 2011, 00:47 Ver último mensaje
soplo
No hay nuevos mensajes Comprobar Existencia De Comando Antes De E... portaro Aplicaciones/Fragmentos de Código 14 Viernes, 05 Enero 2018, 23:18 Ver último mensaje
portaro
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron