urllib2 python ejemplos
Python-urllib2 & cookielib (3)
Creo que es un problema con el servidor que está configurando una nueva cookie para cada solicitud.
Estoy intentando abrir el siguiente sitio web, recuperar la cookie inicial y usarla para la segunda URL abierta, PERO si ejecuta el siguiente código, genera 2 cookies diferentes. ¿Cómo uso la cookie inicial para la segunda url-open?
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
home = opener.open(''https://www.idcourts.us/repository/start.do'')
print cj
search = opener.open(''https://www.idcourts.us/repository/partySearch.do'')
print cj
La salida muestra 2 cookies diferentes cada vez que puedes ver:
<cookielib.CookieJar[<Cookie JSESSIONID=0DEEE8331DE7D0DFDC22E860E065085F for www.idcourts.us/repository>]>
<cookielib.CookieJar[<Cookie JSESSIONID=E01C2BE8323632A32DA467F8A9B22A51 for www.idcourts.us/repository>]>
Esto no es un problema con urllib. Ese sitio hace algunas cosas funky. Debe solicitar un par de hojas de estilo para validar su ID de sesión:
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# default User-Agent (''Python-urllib/2.6'') will *not* work
opener.addheaders = [
(''User-Agent'', ''Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11''),
]
stylesheets = [
''https://www.idcourts.us/repository/css/id_style.css'',
''https://www.idcourts.us/repository/css/id_print.css'',
]
home = opener.open(''https://www.idcourts.us/repository/start.do'')
print cj
sessid = cj._cookies[''www.idcourts.us''][''/repository''][''JSESSIONID''].value
# Note the +=
opener.addheaders += [
(''Referer'', ''https://www.idcourts.us/repository/start.do''),
]
for st in stylesheets:
# da trick
opener.open(st+'';jsessionid=''+sessid)
search = opener.open(''https://www.idcourts.us/repository/partySearch.do'')
print cj
# perhaps need to keep updating the referer...
No es una respuesta real (pero es demasiado larga para un comentario); Posiblemente sea útil para cualquier otra persona que intente responder esto.
A pesar de mis mejores intentos, no puedo resolver esto.
Buscando en Firebug, la cookie parece permanecer igual (funciona correctamente) para Firefox.
urllib2.HTTPSHandler(debuglevel=1)
para depurar qué encabezados está enviando Python, y parece que vuelve a enviar la cookie.
También agregué todos los encabezados de solicitud de Firefox para ver si eso ayudaría (no fue así):
opener.addheaders = [
(''User-Agent'', ''Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13''),
..
]
Mi código de prueba:
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), urllib2.HTTPSHandler(debuglevel=1))
opener.addheaders = [
(''User-Agent'', ''Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13''),
(''Accept'', ''text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8''),
(''Accept-Language'', ''en-gb,en;q=0.5''),
(''Accept-Encoding'', ''gzip,deflate''),
(''Accept-Charset'', ''ISO-8859-1,utf-8;q=0.7,*;q=0.7''),
(''Keep-Alive'', ''115''),
(''Connection'', ''keep-alive''),
(''Cache-Control'', ''max-age=0''),
(''Referer'', ''https://www.idcourts.us/repository/partySearch.do''),
]
home = opener.open(''https://www.idcourts.us/repository/start.do'')
print cj
search = opener.open(''https://www.idcourts.us/repository/partySearch.do'')
print cj
Siento que me falta algo obvio.