Python, urllib2 e cookies
por Walter Cruz on 14/12/2006
in Python, Google, Linguagens
Essa semana precisei fazer reconhecer os cookies recebidos de um servidor, usando python.
Para conexões http no python, uso a urllib2. Após algumas pesquisas, encontrei o módulo necessário: é o cookielib. Segue um código que faz um acesso em google.com e traz os cookies, comentado.
#-*- encoding: iso8859-1 -*-
import urllib2
#biblioteca para requisições http
import cookielib
#biblioteca para tratar de cookies
cj = cookielib.CookieJar()
#Uma nova instância de um CookieJar. É onde guardaremos os cookis
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#O método build_opener facilita algumas coisas. Estamos instalando um handler - um manipulador de cookies, o nosso cj.
urllib2.install_opener(opener)
#Podemos usar diversos openers. Com o install_opener, colocamos o nosso opener como o default
theurl = 'http://google.com'
txdata = None
txheaders = {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
#Vamos brincar de ser o IE 5.5
try:
req = urllib2.Request(theurl, txdata, txheaders)
#criação da requisição
handle = urllib2.urlopen(req)
#A requisição própriamente dita
except IOError, e:
print 'Falha em abrir a URL "%s".' % theurl
if hasattr(e, 'code'):
print 'Código do erro - %s.' % e.code
else:
print 'Here are the headers of the page :'
#os cabeçalhos da página
print handle.info()
print 'Cookies recebidos:'
for index, cookie in enumerate(cj):
print index, ' : ', cookie
Faça um teste eliminando o manipulador de cookies substituindo a linha
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
por:
opener = urllib2.build_opener()
Você verá que mesmo o servidor enviando um cabeçalho Set-Cookie, não temos onde receber.
Subscribe: 



Olá, gostei bastante do seu post. Acabei de ler alguns howto sobre "fetching urls with python" e estava faltando a parte de manipulação de cookies.
Valeu!