> >>>> 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/