<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br><div class="gmail_quote"><div class="im">

2010/4/2 Jose Caballero <span dir="ltr">&lt;<a href="mailto:jcaballero.hep@gmail.com" target="_blank">jcaballero.hep@gmail.com</a>&gt;</span><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">


<br><br><div><div></div><div class="h5"><div class="gmail_quote">El 2 de abril de 2010 11:45, Boris Perez Canedo <span dir="ltr">&lt;<a href="mailto:inf200523@ucf.edu.cu" target="_blank">inf200523@ucf.edu.cu</a>&gt;</span> escribió:<div>
<div></div><div>

<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div>Hola,<br><br>quisiera poder comprobar que una
determinada URL existe y es accesible, pero sin &#39;descargar&#39; su contenido, simplemente
comprobar que el server está activo, que el usuario no ha escrito mal la URL (sin
&#39;typos&#39;), 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. <br><br>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:<br><br>$ curl
--head <a title="Este enlace externo se abrirá en una nueva ventana" href="http://www.google.com" target="_blank">http://www.google.com</a><br>HTTP/1.0 200
OK<br>Date: Fri, 02 Apr 2010 15:00:37 GMT<br>Expires: -1<br>Cache-Control:
private, max-age=0<br>Content-Type: text/html; charset=ISO-8859-1<br>Set-Cookie:
PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_; expires=Sun,
01-Apr-2012 15:00:37 GMT; path=/; domain=.<a title="Este enlace externo se abrirá en
una nueva ventana" href="http://google.com" target="_blank">google.com</a><br>Set-Cookie:
NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0;
expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.<a title="Este enlace externo se
abrirá en una nueva ventana" href="http://google.com" target="_blank">google.com</a>;
HttpOnly<br>Server: gws<br>X-XSS-Protection: 0<br>X-Cache: MISS from
httpproxy4.bnl.vip<br>X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128<br>Proxy-Connection: close<br><br>$ curl --head <a title="Este enlace externo se
abrirá en una nueva ventana" href="http://www.google.comm" target="_blank">http://www.google.comm</a><br>HTTP/1.0 503 Service Unavailable<br>Server: squid/3.0.STABLE8<br>Mime-Version: 1.0<br>Date: Fri, 02 Apr 2010 15:08:02
GMT<br>Content-Type: text/html<br>Content-Length: 1823<br>Expires: Fri, 02 Apr
2010 15:08:02 GMT<br>X-Squid-Error: ERR_DNS_FAIL 0<br>X-Cache: MISS from
httpproxy4.bnl.vip<br>X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128<br>Proxy-Connection: close<br><br>Pero de esta forma es necesario hacer demasiado
&#39;parsing&#39;, y no siempre la primera línea contiene &quot;OK&quot; aunque la URL
sea válida. No tengo demasiado claro cómo puedo validar la URL a partir de
este tipo de resultados. <br><br>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 &#39;link&#39; a
un ejemplo de cómo validar una URL sin necesidad de descargar su contenido,
válido para python2.3, estaré eternamente agradecido. <br><br><br>Muchas gracias. Saludos cordiales,<br><br>Jose<br><br></div></div>Hola Jose,<br><br>la
primera linea no siempre contiene OK, pero no puedes obtener el código de
respuesta e interpretarlo?<br><br>En el primer caso el código es 200<br>y
en el segundo 503, utiliza las expresiones regulares.<br><br>Ejemplo:<br>(HTTP/\d\.\d)\s(\d{3})<br>en el grupo 1 tienes la versión del protocolo y en
el grupo 2 el código.<br><br>import re<br>reobj =
re.compile(r&quot;(HTTP/\d\.\d)\s(\d{3})&quot;)<br><br>match =
reobj.search(primera_linea)<br><br>if match:<br>       version = match.group(1)<br>       codigo = match.group(2)<div><div></div><div><br><br><br>Saludos,<br>Boris.<br><br></div></div></blockquote></div></div><div> <br>Hola Boris,<br>



<br>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. <br><br><br></div></div></div></div></blockquote></div></blockquote><div>
<br><br><br>El 4 de abril de 2010 11:36, necudeco <span dir="ltr">&lt;<a href="mailto:necudeco@gmail.com">necudeco@gmail.com</a>&gt;</span> escribió:<br>NO Siempre.<br><br>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<br><br>Saludos<br><br><br><br>Hola,<br>¿Te  refieres a cosas como <a href="http://tinyurl.com">tinyurl.com</a>? Hmmm, algo a tener en cuenta, sin duda. Gracias por el comentario. <br><br><br>Jose<br>
</div></div><br>