>
>>>> Hola,
>>>>>
>>>>> quisiera poder comprobar que una determinada URL existe y es accesible,
>>>>> pero sin 'descargar' su contenido, simplemente comprobar que el server 
>>>>> está
>>>>> activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero
>>>>> sin tener que descargar su contenido. Podría hacer un simple wget the la 
>>>>> URL
>>>>> y ver si funciona, pero no me interesa.
>>>>>
>>>>> Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve
>>>>> la metainformación contenida en el HEAD. En principio eso seria 
>>>>> suficiente.
>>>>> Ejemplo:
>>>>>
>>>>> $ curl --head http://www.google.com
>>>>> HTTP/1.0 200 OK
>>>>> Date: Fri, 02 Apr 2010 15:00:37 GMT
>>>>> Expires: -1
>>>>> Cache-Control: private, max-age=0
>>>>> Content-Type: text/html; charset=ISO-8859-1
>>>>> Set-Cookie:
>>>>> PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_;
>>>>> expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com
>>>>> Set-Cookie:
>>>>> NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0;
>>>>> expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com;
>>>>> HttpOnly
>>>>> Server: gws
>>>>> X-XSS-Protection: 0
>>>>> X-Cache: MISS from httpproxy4.bnl.vip
>>>>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128
>>>>> Proxy-Connection: close
>>>>>
>>>>> $ curl --head http://www.google.comm
>>>>> HTTP/1.0 503 Service Unavailable
>>>>> Server: squid/3.0.STABLE8
>>>>> Mime-Version: 1.0
>>>>> Date: Fri, 02 Apr 2010 15:08:02 GMT
>>>>> Content-Type: text/html
>>>>> Content-Length: 1823
>>>>> Expires: Fri, 02 Apr 2010 15:08:02 GMT
>>>>> X-Squid-Error: ERR_DNS_FAIL 0
>>>>> X-Cache: MISS from httpproxy4.bnl.vip
>>>>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128
>>>>> Proxy-Connection: close
>>>>>
>>>>> Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre
>>>>> la primera línea contiene "OK" aunque la URL sea válida. No tengo 
>>>>> demasiado
>>>>> claro cómo puedo validar la URL a partir de este tipo de resultados.
>>>>>
>>>>> He estado mirando un poco las clases urllib y urllib2, pero no acabo de
>>>>> ver cómo puedo hacer la validación sin que el contenido de la URL se
>>>>> descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de 
>>>>> cómo
>>>>> validar una URL sin necesidad de descargar su contenido, válido para
>>>>> python2.3, estaré eternamente agradecido.
>>>>>
>>>>>
>>>>> Muchas gracias. Saludos cordiales,
>>>>>
>>>>> Jose
>>>>>
>>>>> Hola Jose,
>>>>>
>>>>> la primera linea no siempre contiene OK, pero no puedes obtener el
>>>>> código de respuesta e interpretarlo?
>>>>>
>>>>> En el primer caso el código es 200
>>>>> y en el segundo 503, utiliza las expresiones regulares.
>>>>>
>>>>> Ejemplo:
>>>>> (HTTP/\d\.\d)\s(\d{3})
>>>>> en el grupo 1 tienes la versión del protocolo y en el grupo 2 el
>>>>> código.
>>>>>
>>>>> import re
>>>>> reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})")
>>>>>
>>>>> match = reobj.search(primera_linea)
>>>>>
>>>>> if match:
>>>>>        version = match.group(1)
>>>>>        codigo = match.group(2)
>>>>>
>>>>>
>>>>>
>>>>> Saludos,
>>>>> Boris.
>>>>>
>>>>>
>>>> Hola Boris,
>>>>
>>>> eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el
>>>> mismo número, o al menos un conjunto conocido de números, eso me vale.
>>>>
>>>>
>>>>
>>
>>
>> El 4 de abril de 2010 11:36, necudeco <necud...@gmail.com> escribió:
>>
>> NO Siempre.
>>
>> Por ejemplo con las url amigables, cuando envias una url inexistente el
>> sistema te devuelve una pagina que visualmente es 404, pero el codigo http
>> que te envia es 200
>>
>> Saludos
>>
>>
>>
>> Hola,
>> ¿Te  refieres a cosas como tinyurl.com? Hmmm, algo a tener en cuenta, sin
>> duda. Gracias por el comentario.
>>
>>
>>
no, me referia a url del tipo

http://sitioweb.com/index.php/04/08/nuevo-post

Saludos



No te sigo. Devuelve 404:

$ curl --head http://sitioweb.com/index.php/04/08/nuevo-post
HTTP/1.0 404 Not Found
Date: Mon, 05 Apr 2010 01:38:03 GMT
Server: Apache
Content-Type: text/html; charset=iso-8859-1
X-Cache: MISS from httpproxy4.bnl.vip
X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128
Proxy-Connection: close
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a