• Publicidad

Extracción de URL desde una página ASP y JSON

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Extracción de URL desde una página ASP y JSON

Notapor juank_93 » 2011-12-17 09:47 @449

Muy buenos días, mi nombre es Juan Carlos y soy nuevo por acá...

Deseo saber como puedo "Extraer" las URL de una página ASP que utiliza JSON,
en una página con HTML simple. Lo que yo hago es extraerlas con expresiones regulares
pero como las URL no se muestran (solo se muestran los Id a través de un POST) pues no he podido avanzar...

Miré en CPAN y me encontré con el módulo JSON y leí varias veces sobre éste, pero no he encontrado la forma de aplicarlo a mi problema.

En firebug me despliega un POST y en la pestaña de JSON de este POST me muestra las URL enlazadas con el Id que les acabé de comentar (esto es lo que busco hacer con Perl).

De antemano gracias por la ayuda y perdón por mi ignorancia en el tema.
juank_93
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2011-12-17 09:22 @432

Publicidad

Re: Extracción de URL desde una página ASP y JSON

Notapor explorer » 2011-12-17 15:43 @696

Bienvenido a los foros de Perl en español, juank_93.

Da igual que la página sea ASP y use JSON. Si el resultado es código HTML (y tiene que serlo, para que el navegador del usuario pueda pintar la página), se pueden extraer los enlaces desde ahí.

¿No puedes poner un ejemplo de lo que quieres hacer? Aunque sea falseando los datos. Con unas pocas líneas de ejemplo nos vale.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extracción de URL desde una página ASP y JSON

Notapor juank_93 » 2011-12-18 19:49 @867

Muchísimas gracias por responder tan pronto a mi pregunta...

Bien, pues lo que pasa es que cuando carga en Firefox me muestra exactamente como uno
esperaría que mostrara img src="http://servidor.com/directorio/000_imagen.ext"

pero cuando la trato de cargar con Perl me muestra img scr = idimagen::javascript </a>

sin ningún tipo de URL...

Leyendo por ahí pude ver algo de URL amigables y objetos JSON, y efectivamente,
firebug me muestra las URL en la pestaña de JSON...

Algo que he visto es que si cancelo la carga de la página en Firefox el me muestra lo mismo de Perl...

Ya intenté con scraping, JSON, diferentes formas de Get y Post, unas cuantas decenas
de módulos de CPAN y aún nada.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/perl/bin/perl.exe
  2.  
  3. use strict;
  4.  
  5. use LWP::Simple;
  6. use LWP::UserAgent;
  7. use URI::Escape;
  8. use HTTP::Request::Common;
  9.  
  10.  
  11. my $url = "http://servidor.com/directorio/page1.php";
  12. print "Conectando a $url\n";
  13. my $respuesta = get( $url );
  14.  
  15. my ($encontrados) = ($respuesta =~ /">(.*?)<\/ul>/is);
  16. print "Carga de la url completa...\n\n";
  17.  
  18. my $directorio_contenedor = "DIRECTORIO";
  19.  
  20. if(!-e "$directorio_contenedor") {
  21.    mkdir("$directorio_contenedor") or die "No se puede crear $directorio_contenedor";
  22. }
  23.  
  24.  
  25. my $maxi = "460";
  26. my $cont = "0";
  27. while ($maxi >= $cont) {
  28.   my ($link) = ($encontrados =~ /<a href="(.*?)\/"/is);
  29.  
  30.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
juank_93
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2011-12-17 09:22 @432

Re: Extracción de URL desde una página ASP y JSON

Notapor explorer » 2011-12-19 07:53 @370

El problema es que la página se compone de forma dinámica.

Hay un JavaScript que se ejecuta en el momento de la carga de la página, y termina de rellenar esos enlaces.

Entonces, hay varias soluciones...

  • hacer que sea Firefox el que navegue y solicitarle a él el contenido de la página una vez que termine. Con módulos como WWW::Mechanize::Firefox se puede conseguir
  • investigar la forma en que esos enlaces se construyen. Dices que son peticiones JSON a un servidor. Entonces hay que suplantar esas peticiones con las nuestras, sin olvidarnos de indicar adecuadamente el referer de quien hace la petición, ya que el servidor puede tener como norma de seguridad el no admitir peticiones que no vengan referidas de las propias páginas que él sirve
  • hay otros módulos, como el WWW::Scripter::Plugin::JavaScript que permite ejecutar algo de JavaScript, con lo que puede ayudar a WWW::Scripter
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extracción de URL desde una página ASP y JSON

Notapor juank_93 » 2011-12-19 10:30 @479

Muchas gracias por la respuesta, ya me bajé el módulo de JavaScript y
el de Firefox pero tengo problemas con el NMAKE. Me muestra:

"syntax error at -e line 1, near "'755'>

y líneas más abajo aparece

Fatal error U1077 Return code 0xff

Esto me pasa con TODOS los módulos que le he intentado instalar...

¿Alguna idea de por qué pasa esto?

Gracias y perdón por las molestias...
juank_93
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2011-12-17 09:22 @432

Re: Extracción de URL desde una página ASP y JSON

Notapor explorer » 2011-12-19 11:19 @513

¿En qué sistema operativo estás?

WWW::Mechanize::Firefox no funciona en Windows, al menos, la última versión.

Si el error te sale con todos los módulos, quizás tengas roto el proceso de instalación. Quizás debas reinstarlo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extracción de URL desde una página ASP y JSON

Notapor juank_93 » 2011-12-19 11:40 @528

Tengo Windows XP Service Pack 3
Mozilla 8.0
Active Perl

Si ese módulo no funciona en Windows, ¿qué otro módulo puedo utilizar similar a ese?

No puedo utilizar Cygwin ya que es muy lento en mi netbook y no me deja hacer nada...

¿Hay otro modo de instalar los módulos sin pasar por nmake? Ya leí lo referente en los foros y dicen lo mismo... Bajas el módulo, lo extraes y ejecutas el .pl que viene allí, luego nmake y ya... pero si hubiese un camino que no requiriera nmake sería muy útil.

Leyendo por ahí me encontré una solución también viable, Remote Control 0.2
es un addon de Firefox para controlarlo por medio de scripts, creería yo que ajustando un par de cosas en Perl podría utilizar un script que...

1. Envíe la orden al navegador de cargar la página
2. Cargue el código fuente como se supone lo debería entregar Firefox (html básico)
3. Procese el fuente con Expresiones regulares
4. Y finalmente muestre lo que tendría que mostrar...


Miro por ese camino y les comento...
igual me serviría de mucho su opinión al respecto...
juank_93
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2011-12-17 09:22 @432

Re: Extracción de URL desde una página ASP y JSON

Notapor explorer » 2011-12-19 21:52 @953

Para instalar módulos con Active Perl, la primera opción es usar el PPM gráfico.

El nmake y demás pasos, es para cuando no se encontraba el módulo en trouchelle.com, lo cual es raro, porque hay un montón.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extracción de URL desde una página ASP y JSON

Notapor juank_93 » 2011-12-22 14:37 @650

Lo sé, pero igual en el PPM gráfico no me muestra el módulo que me dices...

Según miré sus configuraciones éste se conecta a la base y solicita los módulos según el
tipo de sistema desde el cual se haga la petición; y pues según lo que dices si el módulo
no corre en Windows pues por eso no lo muestra. Ya he mirado por muchos medios
y la única (probablemente) manera es controlar el navegador para que éste
mande las peticiones y lance los resultados al script...

Esto ya lo logré hacer con control remote y netcat para Windows. El problema que tengo ahora
es en lugar de utilizar netcat, utilizar el módulo Net::Telnet de Perl. Ya logré que envie la orden
de abrir una página X, pero no me muestra el resultado en el script...

Intenté con waitfor(), y con cmd(), y ninguno. La conexión se cierra antes de que el
script reciba la respuesta del navegador.

He aquí lo que llevo en el paso de telnet...


Sintáxis: [ Descargar ] [ Ocultar ]
  1. #!c:/perl/bin/perl.exe 
  2.  
  3.  
  4. use Net::Telnet(); 
  5. $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'die', Port=>23);  #timeout en segundos 
  6. $telnet->open('localhost');  
  7. $telnet->print('window.location = "http://www.google.com.co/"');  
  8. $telnet->waitfor('/\$ $/i');  
  9. $telnet->print('orden');  
  10. $output = $telnet->waitfor('/\$ $/i');  
  11. print $output; 
  12.  
  13.  
  14. ## envío del comando, mostrando la respuesta del navegador. 
  15.     # my @lines = $telnet->cmd("who\n"); 
  16.     # print @lines or die "No se puede imprimir la salida"; 
  17. #($forecast) = $telnet->waitfor('/[ \t]+press return to continue/i'); 
  18. #  print $forecast; 
  19.      
  20. exit() 


Aquí están los dos métodos, por supuesto no los utilizo ambos al mismo tiempo
simplemente pongo como comentario el que no voy a utilizar pero ninguno de los dos
me sirve, me dice que el tiempo de espera se ha agotado según el timeout que le
pongo pero nunca muestra la respuesta del navegador.


¿Tienen idea de por qué pasa esto?
juank_93
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2011-12-17 09:22 @432

Re: Extracción de URL desde una página ASP y JSON

Notapor explorer » 2011-12-22 17:39 @777

Pues el caso... es que la versión anterior sí que funciona en Windows...

Sería interesante saber cómo ejecutas netcat. Dudo que tengas que hacer una conexión al puerto 23.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado