12.05.2013 Views

Python para todos

Python para todos

Python para todos

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

leídos.<br />

<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />

La función urlretrieve toma como parámetros la URL a descargar<br />

y, opcionalmente, un parámetro filename con la ruta local en la<br />

que guardar el archivo, un parámetro data similar al de urlopen y un<br />

parámetro reporthook con una función que utilizar <strong>para</strong> informar del<br />

progreso.<br />

A excepción de las ocasiones en las que se utiliza el parámetro data<br />

las conexiones siempre se realizan utilizando GET (los parámetros se<br />

envían en la URL). Para enviar datos usando GET basta con concatenar<br />

la cadena resultante de urlencode con la URL a la que nos vamos a<br />

conectar mediante el símbolo ?.<br />

<strong>para</strong>ms = urllib.urlencode({“usuario”: “manuel”,<br />

“password”: “contraseña”})<br />

f = urllib2.urlopen(“http://ejemplo.com/login” +<br />

“?” + <strong>para</strong>ms)<br />

En urllib también se utiliza una función urlopen <strong>para</strong> crear nuestros<br />

pseudo-archivos, pero a diferencia de la versión de urllib, la función<br />

urlopen de urllib2 también puede tomar como parámetro un objeto<br />

Request, en lugar de la URL y los datos a enviar.<br />

La clase Request define objetos que encapsulan toda la información<br />

relativa a una petición. A través de este objeto podemos realizar peticiones<br />

más complejas, añadiendo nuestras propias cabeceras, como el<br />

User-Agent.<br />

El constructor más sencillo <strong>para</strong> el objeto Request no toma más que<br />

una cadena indicando la URL a la que conectarse, por lo que utilizar<br />

este objeto como parámetro de urlopen sería equivalente a utilizar una<br />

cadena con la URL directamente.<br />

Sin embargo el constructor de Request también tiene como parámetros<br />

opcionales una cadena data <strong>para</strong> mandar datos por POST y un<br />

diccionario headers con las cabeceras (además de un par de campos<br />

origin_req_host y unverifiable, que quedan fuera del propósito del<br />

capítulo por ser de raro uso).<br />

94

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!