28.06.2017 Views

Python para todos

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

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

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

leídos.<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 />

98

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

Saved successfully!

Ooh no, something went wrong!