| You are here: Inicio > Inmersión en Python > Servicios Web HTTP > Establecer el User-Agent | << >> | ||||
Inmersión en PythonPython de novato a experto |
|||||
El primer paso para mejorar nuestro cliente de servicios web HTTP es identificarnos adecuadamente con User-Agent. Para hacerlo nos hace falta pasar de la urllib básica y zambullirnos en urllib2.
>>> import httplib >>> httplib.HTTPConnection.debuglevel = 1>>> import urllib2 >>> request = urllib2.Request('http://diveintomark.org/xml/atom.xml')
>>> opener = urllib2.build_opener()
>>> feeddata = opener.open(request).read()
connect: (diveintomark.org, 80) send: ' GET /xml/atom.xml HTTP/1.0 Host: diveintomark.org User-agent: Python-urllib/2.1 ' reply: 'HTTP/1.1 200 OK\r\n' header: Date: Wed, 14 Apr 2004 23:23:12 GMT header: Server: Apache/2.0.49 (Debian GNU/Linux) header: Content-Type: application/atom+xml header: Last-Modified: Wed, 14 Apr 2004 22:14:38 GMT header: ETag: "e8284-68e0-4de30f80" header: Accept-Ranges: bytes header: Content-Length: 26848 header: Connection: close
| Si aún mantiene abierto el IDE de Python tras el ejemplo de la sección anterior, puede saltarse esto, ya que es para activar la depuración de HTTP de manera que pueda ver lo que se está enviando realmente, y qué viene de vuelta. | |
| Descargar un recurso HTTP con urllib2 es un proceso de tres pasos, por buenas razones que aclararé en breve. El primer paso es crear un objeto Request, que toma la URL del recurso que pretendemos descargar. Tenga en cuenta que este paso no descarga nada realmente. | |
| El segundo paso es construir algo que abra la URL. Puede tomar cualquier tipo de manejador, que controlará cómo se manipulan las respuestas. Pero también podríamos crear uno de estos “abridores” sin manejadores a medida, que es lo que estamos haciendo aquí. Veremos cómo definir y usar estos manejadores más adelante en este capítulo, cuando exploremos las redirecciones. | |
| El último paso es decirle al abridor que abra la URL usando el objeto Request que hemos creado. Como puede ver por toda la información de depuración que se imprime, este paso sí que descarga el recurso, y almacena los datos devueltos en feeddata. |
>>> request<urllib2.Request instance at 0x00250AA8> >>> request.get_full_url() http://diveintomark.org/xml/atom.xml >>> request.add_header('User-Agent', ... 'OpenAnything/1.0 +http://diveintopython.org/')
>>> feeddata = opener.open(request).read()
connect: (diveintomark.org, 80) send: ' GET /xml/atom.xml HTTP/1.0 Host: diveintomark.org User-agent: OpenAnything/1.0 +http://diveintopython.org/
' reply: 'HTTP/1.1 200 OK\r\n' header: Date: Wed, 14 Apr 2004 23:45:17 GMT header: Server: Apache/2.0.49 (Debian GNU/Linux) header: Content-Type: application/atom+xml header: Last-Modified: Wed, 14 Apr 2004 22:14:38 GMT header: ETag: "e8284-68e0-4de30f80" header: Accept-Ranges: bytes header: Content-Length: 26848 header: Connection: close
<< Depuración de servicios web HTTP |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
Tratamiento de Last-Modified y ETag >> |