El 2 de abril de 2010 15:06, Jose Caballero <jcaballero....@gmail.com>escribió:
> > > El 2 de abril de 2010 11:45, Boris Perez Canedo > <inf200...@ucf.edu.cu>escribió: > > 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. > > > Gracias, > Jose > > Me respondo yo mismo: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html Muchas gracias por todo. Saludos, Jose
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/