Saltar al contenido

Obteniendo datos de Internet

¿Qué es Urllib2?

urllib2 es un módulo de Python para buscar URL.

¿Qué puede hacer?

Ofrece una interfaz muy simple, en forma de función urlopen.

Urlopen es capaz de obtener URL utilizando una variedad de protocolos diferentes como
(http, ftp, archivo).

También ofrece una interfaz para manejar autenticación básica, cookies, proxies
etcétera.

Estos son proporcionados por objetos llamados manejadores y abridores.

Solicitudes HTTP

HTTP se basa en solicitudes y respuestas, en el sentido de que el cliente realiza solicitudes y
los servidores envían respuestas.

Esta respuesta es un objeto similar a un archivo, lo que significa que, por ejemplo, puede llamar a .read ()
en la respuesta.

¿Como puedo usar lo?

import urllib2
response = urllib2.urlopen('http://python.org/')
html = response.read()

Agentes de usuario

También puede agregar sus propios encabezados con urllib2.

A algunos sitios web no les gusta que los programas los naveguen.

Por defecto, urllib2 se identifica a sí mismo como Python-urllib / xy (donde xey son
los números de versión mayor y menor de la versión de Python,
lo que puede confundir el sitio o simplemente no funcionar.

La forma en que un navegador se identifica es a través del encabezado User-Agent.

Vea nuestra publicación de Agente de usuario de Urllib2 que describe cómo usar eso en un programa.

Obtener encabezados HTTP

Escribamos un pequeño script que obtenga los encabezados HTTP de un sitio web.

import urllib2
response = urllib2.urlopen("http://www.python.org")
print "-" * 20
print "URL : ", response.geturl()

headers = response.info()
print "-" * 20
print "This prints the header: ", headers
print "-" * 20
print "Date :", headers['date']
print "-" * 20
print "Server Name: ", headers['Server']
print "-" * 20
print "Last-Modified: ", headers['Last-Modified']
print "-" * 20
print "ETag: ", headers['ETag']
print "-" * 20
print "Content-Length: ", headers['Content-Length']
print "-" * 20
print "Connection: ", headers['Connection']
print "-" * 20
print "Content-Type: ", headers['Content-Type']
print "-" * 20
Dará una salida similar a esta:

——————–
URL: http://www.python.org
——————–
Esto imprime el encabezado: Fecha: viernes 12 de octubre de 2012 08:09:40 GMT
Servidor: Apache / 2.2.16 (Debian)
Última modificación: jueves, 11 de octubre de 2012 22:36:55 GMT
ETag: “105800d-4de0-4cbd035514fc0”
Rangos de aceptación: bytes
Longitud del contenido: 19936
Variar: aceptar codificación
Conexión: cerrar
Tipo de contenido: texto / html

——————–
Fecha: viernes 12 de octubre de 2012 08:09:40 GMT
——————–
Nombre del servidor: Apache / 2.2.16 (Debian)
——————–
Última modificación: jueves, 11 de octubre de 2012 22:36:55 GMT
——————–
ETag: “105800d-4de0-4cbd035514fc0”
——————–
Longitud del contenido: 19936
——————–
Conexión: cerrar
——————–
Tipo de contenido: texto / html
——————–

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.