[pyar] scrapyando páginas con javascript

Pablo Gabriel Celayes pablocelayes en gmail.com
Mie Mar 19 18:18:57 ART 2014


Hola gentes, cómo andan?

Les cuento un problema que estoy teniendo, a ver si alguno con experiencia
en el asunto me puede iluminar un poco:

Tengo que extraer información sobre precios de habitaciones y
disponibilidades, de urls como esta:

http://www.booking.com/hotel/tr/ayasofyahotel.en-gb.html?selected_currency=EUR&checkin=2014-03-20&checkout=2014-03-22

En una primera etapa había tenido que traerme la lista de hoteles, y hasta
ahí con scrapy solo me las arreglé bastante bien. El problema viene porque
la data que estoy tratando de extraer ahora no está en el html estático,
sino que se genera dinámicamente con javascript, y scrapy no me la trae.

Estuve googleando bastante sobre el tema, y veo que hay varias formas de
resolver esto, una de las cuales ya implementé a modo de prototipo (1.),
pero que planeo tirar a futuro por cuestiones de eficiencia. A saber:

1. Interfacear con algún browser vía Selenium o similar, ponerle un timeout
a cada página para esperar a que cargue y scrapear de ahí. Es lo que tengo
hecho hasta ahora, pero según mis cuentas, tardaría 40hs en traer la data
que necesito para una ciudad.

2. Hacer un poco de ingeniería inversa sobre las llamadas AJAX, para ver
dónde se traen los json con la data que necesito, y hacer que scrapy haga
esas requests directamente. Suena a la más eficiente, pero pinta bastante
engorroso, y no he logrado dar con una herramienta que me simplifique el
tema de trackear que partes de la página se cargan con que requests (capaz
q el mismo firebug me lo permito, pero no termino de avivarme de cómo).

3. instanciar algún *headless-browser *como el webkit de PyQt4 y hacer lo
mismo que con Selenium. Por lo que leí sería un toque más rápido.

Tanto 1. como 3. mejorarán bastante haciendo multithreading me imagino,
pero quiero saber si vale la pena antes de ponerme a hacerlo.

¿Qué creen que me conviene hacer?

Desde ya mil gracias, retribuiré las respuestas en mates/ferneces en el
PyCamp ;)

-- 
 *ıl**l**ıl**l**ı* ρąβℓ๏ *ıllı**lı*
We are the problem. And we should provide the *solution*.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140319/0bb57225/attachment.html>


More information about the pyar mailing list