[caracas-pm] Leer resultados AJAX desde Mech

Alejandro Imass ait at p2ee.org
Sun Aug 11 11:00:17 PDT 2013


2013/8/11 Alberto Mijares <amijaresp at gmail.com>:
> Hola lista:
>
> Estoy escribiendo un scraper en perl con WWW::Mechanize::Firefox. Todo
> va bien hasta que me encuentro un formulario con AJAX.
>
> Los posibles valores del primer campo los puedo leer directamente
> desde el HTML, pero los valores del segundo dependen de la selección
> del primero, y los del tercero del segundo. Entonces, logro
> seleccionar un valor para el primer campo y efectivamente se activa el
> segundo campo con la lista de posibles valores, lo que no he logrado
> es leer esa lista de valores.
>
> ¿Alguna idea?
>

Yo he encontrado algumon problemas de sync entre tu acción en FF y
mech de lotro lado. Usa sleep(1) para estar seguro en tre cada paso.
Si es un request ajax hasta sleep(3) y 5 es necesario en lagunos caso.
Mira el renidmiento a mano primero varias vece s a ver que tan rápida
o lenta sea la página en obtener los datos. Sobretodo en listas
grandes, puede tardar varios segundos.

Revisa el código Js de la página a ver como implementaron las listas
enlazadas. Si hay datos en variables JS que no están aún en el HTML y
gual puedes obtener esa data con un programita JS on the fly usando
eval_in_page (i.e. una función anónima que retorne los valores
estructurados de tal form que sean procesables por Perl (e.g. un
string JSON que luego puedas procesar con JSON.pm o un atring separado
por pipes que puedas separar con split, etc.)).

Web sraping es trial en error y pasito a pasito. En páginas con JS,
DHTML y AJAX te vas a encontrar usando más JS con eval_in_page que
Perl ! Incluso puedes ejecutar tu mismo el AJAX desde JS en la página
y devolver lo valores a Perl ;-)

Saludos,

-- 
Alejandro Imass




> Gracias de antemano.
>
> Saludos
>
>
> Alberto Mijares
> _______________________________________________
> caracas-pm mailing list
> caracas-pm at pm.org
> http://mail.pm.org/mailman/listinfo/caracas-pm


More information about the caracas-pm mailing list