Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
try:<br />
f = urllib2.urlopen(“http://www.python.org”)<br />
print f.read()<br />
f.close()<br />
except HTTPError, e:<br />
print “Ocurrió un error”<br />
print e.code<br />
except URLError, e:<br />
print “Ocurrió un error”<br />
print e.reason<br />
Interactuar con webs<br />
Al trabajar con urllib2 nos podemos encontrar, como vemos, con<br />
errores de tipo URLError. Si trabajamos con HTTP podemos encontrarnos<br />
también con errores de la subclase de URLError HTTPError, que<br />
se lanzan cuando el servidor devuelve un código de error HTTP, como<br />
el error 404 cuando no se encuentra el recurso. También podríamos<br />
encontrarnos con errores lanzados por la librería que urllib2 utiliza<br />
por debajo <strong>para</strong> las transferencias HTTP: httplib; o con excepciones<br />
lanzadas por el propio módulo socket.<br />
La función urlopen cuenta con un parámetro opcional data con el que<br />
poder enviar información a direcciones HTTP (y solo HTTP) usando<br />
POST (los parámetros se envían en la propia petición), por ejemplo<br />
<strong>para</strong> responder a un formulario. Este parámetro es una cadena codificada<br />
adecuadamente, siguiendo el formato utilizado en las URLs:<br />
‘password=contrase%A4a&usuario=manuel’<br />
Lo más sencillo <strong>para</strong> codificar la cadena es utilizar el método urlencode<br />
de urllib, que acepta un diccionario o una lista de tuplas (clave,<br />
valor) y genera la cadena codificada correspondiente:<br />
import urllib, urllib2<br />
<strong>para</strong>ms = urllib.urlencode({“usuario”: “manuel”,<br />
“password”: “contraseña”})<br />
f = urllib2.urlopen(“http://ejemplo.com/login”, <strong>para</strong>ms)<br />
Si lo único que queremos hacer es descargar el contenido de una URL<br />
a un archivo local, podemos utilizar la función urlretrieve de urllib<br />
en lugar de leer de un objeto creado con urlopen y escribir los datos<br />
97