Python - Comprobación de ficheros en sitio web

 
Vista:

Comprobación de ficheros en sitio web

Publicado por gadi (16 intervenciones) el 13/05/2014 10:13:32
Buenos días,

Estoy preparando una función para comprobar ficheros existentes.
Tengo dudas a la hora de comprobar si este fichero se encuentra o no.
Tengo una lista con 10 posibles urls;
'http:dominio.com/hola1/hola1/fichero.exe'
'http:dominio.com/hola1/hola2/fichero.exe'
...
'http:dominio.com/hola1/hola20/fichero.exe'

Querría que se realizase una petición al sitio web, línea a línea, y que se verificase, por ejemplo si devuelve un 200, si se encuentra ese fichero, de ser así, que me lo comunique con un print 'Se encuentra el fichero' y pase a la siguiente línea, de no encontrarlo, que no me muestre nada y pase a la siguiente línea.

¿Alguien me puede ayudar?

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Comprobación de ficheros en sitio web

Publicado por UnoPorAhi (16 intervenciones) el 13/05/2014 10:54:14
Una funcion que lo hace:

1
2
3
4
5
6
7
8
import httplib
 
def existe_fichero(dominio, ruta_fichero):
     conn = httplib.HTTPConnection(dominio)
     conn.request('HEAD', ruta_fichero)
     response = conn.getresponse()
     conn.close()
     return response.status == 200


Y lo pruebas asi:
1
existe = existe_fichero('http:dominio.com', '/hola1/hola20/fichero.exe'


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Comprobación de ficheros en sitio web

Publicado por gadi (16 intervenciones) el 13/05/2014 11:12:14
Gracias otra vez.

Funciona, pero no es lo que buscaba...
Ya que no separo el dominio de la ruta, ni va a ser una misma ruta siempre...sino que variará de la URL que yo le indique al script.

1
2
3
4
5
6
7
8
9
10
11
12
#Introducir la URL donde has encontrado el primer fichero
url = raw_input('\nIntroduzca la URL: ')
 
#Leer diccionario
lectura = [linea.strip('\n') for linea in open('dic', 'r')]
 
#Cambiar la ultima carpeta de la URL por cada linea en el diccionario
cambio = url.split('/')
 
for linea in lectura:
  cambio[-2] = str(linea)
  print '/'.join(cambio)


Ahora, cuando me ha devuelto las 20 URLs que se han generado sustituyendo la carpeta indicada por las del diccionario, es cuando necesito que se haga una peticion con cada una de ellas, para comprobar si en alguna existe algún fichero con el mismo nombre que el que se indicó al empezar el script. Y a partir de esto, que me indique con un print si existe ese fichero, y pase a la siguiente petición, o si no existe que pase a la siguiente petición sin indicarme nada.

No se si me explico bien o es un poco lioso...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comprobación de ficheros en sitio web

Publicado por UnoPorAhi (16 intervenciones) el 13/05/2014 12:15:32
No, no es lioso. Ese script es el que te puse yo en el anterior post, pero no se que problema hay en enviar el dominio y la ruta separados. En dicho script no incluias un dominio por lo que entendia que lo informabas aparte.

Como prefieras:

1
2
3
4
5
6
7
8
import urllib2
 
def existe_fichero(url_fichero):
    try:
         f = urllib2.urlopen(urllib2.Request(url_fichero))
         return True
    except:
        return False

Esta funcion toma solo la url completa del fichero:

1
2
3
4
if existe_fichero(ruta_fichero):
    print 'Existe el fichero'
else:
    pass


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Comprobación de ficheros en sitio web

Publicado por gadi (16 intervenciones) el 13/05/2014 12:37:15
Perfecto, gracias!

Voy a ordenar un poco el script para que haga exactamente lo que busco y muestro el código aquí.

Gracias otra vez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comprobación de ficheros en sitio web

Publicado por gadi (16 intervenciones) el 13/05/2014 13:08:27
Aquí está ordenado, muchas gracias compañero!

1
2
3
4
5
6
7
8
cambio = url.split('/')
for linea in lecturaDic:
  cambio[-2] = str(linea)
  posible = '/'.join(cambio)
  if existe_fichero(posible):
    print 'EXISTE!', posible
  else:
    pass
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Comprobación de ficheros en sitio web

Publicado por xve (1646 intervenciones) el 13/05/2014 15:00:26
Gracias por compartirlo Gadi!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Comprobación de ficheros en sitio web

Publicado por xve (1646 intervenciones) el 13/05/2014 12:36:47
Muy bueno tu código UnoPorAhi!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar