Modulo para lectura de URLs

Python nos facilita el módulo urllib2 para la interacción con URLs, tambien existe urllib. Pero aunque su uso  es muy parecido, es menos completa que urllib2.
El modulo urllib2 puede leer datos de una URL usando varios protocolos como HTTP, HTTPS, FTP, o Gopher.

Obtener una Web

Para obtener un streem con el contenido de una página Web solicitaremos a la función urlopen del cualquiera de los módulos ya mencionados. Luego este stream podrá ser leído por medio de los métodos read, readline. Y también podrá ser cerrado por medio del método close.

El ejemplo más simple es el que veremos aquí:

#!/usr/bin/python # Nombre de Fichero: urllib2_1.py  import urllib2 response = urllib2.urlopen('http://www.yahoo.com.ar/') html = response.read()

HTTP se basa en pedidos y respuestas. El cliente hace una solicitud al servidor y el servidor responde. El modulo urllib2 nos permite crear nuestra petición que representa la petición HTTP que están haciendo. En su forma más simple de crear una Solicitud de objeto que especifica la URL que desea buscar. Luego llama a urlopen con esta solicitud objeto como parámetro y urlopen nos devuelve una respuesta objeto de la URL solicitada:

El ejemplo se puede ver aca:

#!/usr/bin/python # Nombre de Fichero: urllib2.py  import urllib2 import sys  web=raw_input("Web es http://") userAgent = 'NuestroNavegador' headers = { 'User-Agent' : userAgent } req = urllib2.Request("http://"+web , None, headers) response = urllib2.urlopen(req) print response.read() response.close()

También podremos necesitar que nuestro cliente Web se valida ante un proxy, esto es muy común cuando nuestro script corre dentro de una empresa.

La modificación de urllib2.py se valida ante un proxy seria proxy.py

#!/usr/bin/python # Nombre de Fichero: proxy.py  import urllib2 import getpass import sys  proxyuser=raw_input("Ingrese usuario:") proxypass= getpass.getpass("Enter proxy password:") httpproxy=raw_input("Ingrese la direccion del proxy:") proxy=urllib2.ProxyHandler({"http":'http://'+proxyuser+':'+proxypass+'@'+httpproxy}) authinfo=urllib2.HTTPBasicAuthHandler() opener=urllib2.build_opener(proxy, authinfo,urllib2.HTTPHandler) urllib2.install_opener(opener)  web=raw_input("Web es http://") userAgent = 'NuestroNavegador' headers = { 'User-Agent' : userAgent } req = urllib2.Request("http://"+web , None, headers) response = urllib2.urlopen(req) print response.read() response.close()

HTTPError y URLError

Dos errores que tenemos que tener en cuenta cuando manejamos urllib2 son:

  • URLError: son errores que lanza la librería.
  • HTTPError: es el error que nos envía el servidor como el conocido 404 cuando no encuentra la pagina

También nos podemos encontrar con errores lanzados por módulos que utiliza urllib2 como httplib o el propio módulo e socket

Por admin

Deja una respuesta

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
100% Free SEO Tools - Tool Kits PRO