• Publicidad

Obtener código web desde Perl

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

Obtener código web desde Perl

Notapor nobody » 2011-05-15 10:18 @471

Hola buenas, es mi primer post y no sé si iría aquí...

He leído un post bastante similar al mio pero creo que trabajaba desde Linux :S

La cosa es que me gustaría coger el código fuente de una web o el formulario XML que me devuelve al introducir una URL...

Me gustaría guardarlo en un archivo o una variable para después buscar un número xx,xxx dentro de ese archivo o variable.

Había pensado hacerlo con wget pero me gustaría no tener que instalar ningún programa. Como trabajo desde Windows me gustaría que fuese sin tener que meterle nada, con lo que trae de serie... ¿Mediante telnet? ¿O mejor me recomendáis algún módulo ya hecho?

¡ Gracias !
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Publicidad

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-15 11:34 @523

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

Dices que no quieres instalar nada en Windows, pero, claro, el Perl sí que has tenido que instalarle... ;)

Para obtener la respuesta de una petición HTTP te vale con usar el módulo LWP::Simple, que viene incluido de base con el Perl:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!Perl
  2.  
  3. use LWP::Simple;
  4.  
  5. $contenido = get("http://www.sn.no/");
  6.  
  7. print "$contenido\n";
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Más información en lwpcook.
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: Obtener código web desde Perl

Notapor nobody » 2011-05-15 11:56 @538

¡¡¡ Pensaba que lo tenía que instalar !!! ¡¡¡ Me estaba volviendo loco intentando instalarlo !!! :(

Una cosa... Estaba mirando tu guía del ppm... Y yo no tengo ninguna interfaz del ppm :S Solo lo puedo usar desde cmd... ¿ Por qué ? En tus fotos veo como un gestor de paquetes y eso... ¿¿Por qué yo no lo tengo?? jejeje

Explorer, muchas gracias, voy a probar y supongo que tendré alguna dudilla más.

PD: Anteriormente ya hice hace unos años mis pinitos en Perl... Un cliente de IRC, concretamente con IO::Socket A ver si me pongo al día :D

Y gracias de nuevo ;)

PD2: Ya tengo mi primer problemilla xDDD Igual es porque la URL es muy larga pero no me funciona esto:
$contenido = get ("http://bolsaphp.sukiweb.net/api/cv_api.php?usuario=nobo&%20api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&%20ticker=BBVA.MC")

Las xxxxxxxx claramente es la contraseña de mi user... ¿ Por qué puede ser que no funcione ?
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-15 12:37 @567

Todos los ActiveState modernos traen un gestor gráfico PPM. Solo tienes que arrancarlo desde el menú de ActiveState dentro de Programas.

El porqué no se puede bajar la URL puede ser por muchas causas... Algunas de ellas:

  • puede que esa web tenga un control de sesiones mediante cookies, y LWP::Simple no está enviando ninguna
  • puede que el servidor web se está dando cuenta de que el cliente es LWP, por lo que denegará cualquier acceso (esto es muy normal)


Prueba con algo más sencillo: http://bolsaphp.sukiweb.net/?ticker=BBVA.MC

Si no te deja, tendrás que investigar por qué causa. Si sospechas que es que están filtrando las peticiones LWP, deberás falsear tu petición, usando LWP::UserAgent, tal y como indica el manual de LWP::Simple. O usar una herramienta más poderosa, como WWW::Mechanize o usar lo último en rascado web con Perl: Scrappy.
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: Obtener código web desde Perl

Notapor nobody » 2011-05-15 12:43 @571

¡Ajam! Justo ahora iba a postear: más fácil todavía: http://bolsaphp.sukiweb.net/

La cosa es que ¡¡¡ nada de nada !!! El problema reside en que le intento hacer un ping y no me lo devuelve:

C:\Users\RASH>ping http://bolsaphp.sukiweb.net/
La solicitud de ping no pudo encontrar el host http://bolsaphp.sukiweb.net/. Compruebe el nombre y
vuelva a intentarlo.

¿Esto a qué es debido? Le busco donde está alojada y http://geo.flagfox.net/?ip=67.225.216.21&host=bolsaphp.sukiweb.net
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-15 12:52 @578

El comando ping no admite URL. Debes darle una IP o el nombre de un servidor.

Más información de ping, en la Wikipedia.
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: Obtener código web desde Perl

Notapor nobody » 2011-05-15 12:58 @582

Pero Google sí lo admite... Y con Google sí me funciona el LWP :S

SS3.SUKIWEB.NET es el dominio. ¿No?

Entonces... ¿Podría usar eso en LWP para acceder a la página de bolsaphp ?

Estoy un poco perdido :S
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-15 13:46 @615

A mí sí que me funciona...

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -MLWP::Simple -E '$contenido = get("http://bolsaphp.sukiweb.net/"); say $contenido'
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


(cuidado: yo estoy en Linux, por lo que hay que cambiar las comillas si estás en Windows)
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: Obtener código web desde Perl

Notapor nobody » 2011-05-15 15:44 @697

Unrecognized switch: -E (-h will show valid options).

... :S
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-15 17:51 @785

Eso indica que tienes instalado un Perl muy viejo.

Prueba a cambiar -E por -e

O poner un Perl igual o superior a v5.10.
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: Google [Bot] y 1 invitado