2011-11-13 19 views
6

Intento usar el código de la siguiente manera para obtener la fuente de htm del sitio web y funciona. Sin embargo, no puedo obtener el resultado cuando visito el sitio web http://reserve.apple.com/WebObjects/ProductReservation.woa/wa/reserveProduct usando el código siguiente. Pero, puedo acceder a esta página usando el navegador correctamente. ¿Me darías algunas pistas o consejos para solucionar este problema? Gracias.Acceder al sitio web - WWW :: Mecanizar

#!/usr/bin/perl 

use strict; 
use warnings; 

# create a new browser 
use WWW::Mechanize; 
my $browser = WWW::Mechanize->new(); 

# tell it to get the main page 

my $sURL = 'http://www.apple.com'; 

#my $sURL = 'http://reserve.apple.com/WebObjects/ProductReservation.woa/wa/reserveProduct'; 

$browser->get($sURL); 

print $browser->content; 

exit(0); 

Respuesta

6

Es un comportamiento extraño, pero el sitio en el URL que desea recuperar requiere siguientes cabeceras ser definido : acepta, Accept-Encoding, Accept-Language, Accept-Charset, Cookie.

De lo contrario, el servidor no responde en absoluto.

Usted puede hacer fácil el código siguiente justo antes de la inserción de su petición "obtener":

$browser->add_header(
    "Accept"   => "", 
    "Accept-Encoding" => "", 
    "Accept-Language" => "", 
    "Accept-Charset" => "", 
    "Cookie"   => "" 
); 

En lugar de campos vacíos se pueden insertar algunos valores reales, pero esto funciona también.

+0

yko - ¡Impresionante! En realidad, también pienso en eso. Pero, ¿podrías compartir conmigo por qué lo sabes? Gracias. –

+0

Me preguntaba también. Gracias por compartir la respuesta. :-) –

+0

@TommyLiu es solo una experiencia. Copié los encabezados de la solicitud de Chrome y los puse en la solicitud de prueba de mecanizado. Y una vez que funcionó, comencé a eliminar encabezados uno por uno. Vaya, se detuvo para funcionar si elimino cualquier encabezado. Luego, eliminé el contenido de los encabezados por partes para intentar encontrar datos significativos. De hecho, me sorprendí cuando descubrí que no necesitaba ningún dato. Solo los nombres de encabezados – yko

Cuestiones relacionadas