Peticiones HTTP con python
Aunque mis primeras impresiones con python no han sido muy placenteras, he de reconocer que es un lenguaje que tiene algo especial. Una mezcla entre la "libertad" de C o perl y la "seriedad" de Java o Ada (por decir algo xD). Creo que voy a usarlo más a menudo pues me está gustando cada vez más.
Bueno a lo que vamos, como mandar una petición POST (o GET) HTTP con python. Como comenté hace un tiempo como hacer esto con perl (aunque usé sockets en vez de un modulo), y ya lo tengo hecho en un script, me ha parecido bien poner el ejemplo:
# paquetes necesarios import httplib, urllib # Host y archivo host = "www.UNApagina.com" target = "/un/arhicvo/index.php" # cabeceras HTTP usando sintaxis NOMBRE:VALOR # si haces un GET, deberías modificar o eliminar la primera cabecera headers = { "Content-type": "application/x-www-form-urlencoded", "Accept": "application/xhtml+xml,text/html;q=0.9,text/plain;", "Referer": "http://www.UnApagina.com/login/ok.php" } # parametros POST, si solo quieres una peticion get no hacen falta params = urllib.urlencode({ 'user': 'paco', 'accion': 'gobernarelmundo' }) # conectamos con el host remoto conn = httplib.HTTPConnection(host) # mandamos la peticion POST con los parametros y las cabeceras anteriores # para un get sería lo mismo pero poniendo get y sin parametros conn.request("POST", target, params, headers) # vemos que narices ha pasado en la petición response = conn.getresponse() print response.status, response.reason # y si todo ha ido bien ahora imprimiremos los resultados :) data = response.read() print data conn.close()
Según lo que deseemos hacer, casi seguro que será mejor encapsular todo el código anterior en una clase parametrizada, pero eso ya es dependiente del contexto donde estemos
.
Octubre 18th, 2006 at 23:55
Puf, muchos comentarios hay ahí xD
También tienes mechanize, que incluye un navegador completito.
Un saludo!