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. --- La mejor vacuna contra el virus A(H1N1) es la higiene personal
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/