Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/07/2015, 21:37
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Ejecutar función onclick con BeautifulSoup??

Ok vamos a ver un poco:

Primera petición (Ok, todo parece normal).
Código HTML:
Ver original
  1. https://www.aromas.es/categorias/perfumes/01

Segunda petición (WTF?! varios parametros y un jsessionid)
Código HTML:
Ver original
  1. https://www.aromas.es/categorias/perfumes/01;jsessionid=91A7A8305ED54A8F5953E91D9AF69320?p_p_id=ProductosPortlet_WAR_aromasportlets&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_pos=3&p_p_col_count=4&_ProductosPortlet_WAR_aromasportlets_accion=buscar&_ProductosPortlet_WAR_aromasportlets_operacion=paginar&_ProductosPortlet_WAR_aromasportlets_pagina=2

Mismos parámetros (diferentes valores) pero sin el jsessionid
Código HTML:
Ver original
  1. https://www.aromas.es/categorias/perfumes/01?p_p_id=ProductosPortlet_WAR_aromasportlets&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_pos=3&p_p_col_count=4&_ProductosPortlet_WAR_aromasportlets_accion=buscar&_ProductosPortlet_WAR_aromasportlets_operacion=paginar&_ProductosPortlet_WAR_aromasportlets_pagina=3

Despues de abrir y cerrar varias ventanas en modo privado me di cuenta que, si usas la segunda url pero cambias la pagina (la que tiene jsessionid) te lleva a esa pagina. Al parecer tiene una cookie o una sessión que persiste pero nuestro script en python no persiste datos a menos que lo hagamos explicitamente.

Con lo cual podemos hacer un script simple como:
Código Python:
Ver original
  1. # coding: utf-8
  2. import urllib2
  3.  
  4. url = "https://www.aromas.es/categorias/perfumes/01;jsessionid=91A7A8305ED54A8F5953E91D9AF69320?p_p_id=ProductosPortlet_WAR_aromasportlets&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_pos=3&p_p_col_count=4&_ProductosPortlet_WAR_aromasportlets_accion=buscar&_ProductosPortlet_WAR_aromasportlets_operacion=paginar&_ProductosPortlet_WAR_aromasportlets_pagina=%d"
  5. url_list = [url % i for i in range(1, 11)]
  6.  
  7. for i, url in enumerate(url_list, start=1):
  8.     response = urllib2.urlopen(url)
  9.     html = response.read()
  10.     response.close()
  11.  
  12.     with open('perfumes-%02d.html' % i, 'wb') as f:
  13.         f.write(html)