2011-11-13 2 views
6

아래 코드를 사용하여 웹 사이트 htm 소스를 얻으려고 노력합니다. 그러나 아래의 코드를 사용하여 웹 사이트 http://reserve.apple.com/WebObjects/ProductReservation.woa/wa/reserveProduct을 방문하면 결과를 얻을 수 없습니다. 그러나 브라우저를 사용하여이 페이지에 액세스 할 수 있습니다. 이 문제를 해결하기위한 힌트 나 요령을 알려주시겠습니까? 고맙습니다.웹 사이트에 접속하십시오 - WWW :: Mechanize

#!/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); 

답변

6

그것은 이상한 행동,하지만 당신이 검색 할 URL의 사이트 정의로 다음과 같은 헤더가 필요합니다 수락-캐릭터 세트, 쿠키, - 언어를 수락, 승인 인코딩을 적용합니다.

그렇지 않으면 서버가 전혀 응답하지 않습니다.

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

대신 빈 필드의 일부 실제 값을 삽입 할 수 있지만,이 역시 작동합니다

당신은 쉽게 "GET"요청하기 전에이 단지 삽입 다음 코드를 할 수 있습니다.

+0

yko - 굉장해! 사실, 나는 또한 그렇게 생각한다. 그러나, 당신이 저를 아는 이유를 저와 함께 나누시겠습니까? 고맙습니다. –

+0

나는 너무 궁금해하고 있었다. 답변을 공유해 주셔서 감사합니다. :-) –

+0

@ TommyLiu 그것은 단지 경험 일뿐입니다. 크롬 요청에서 헤더를 복사하여 테스트 기계화 요청에 넣었습니다. 일단 작동이되면 헤더를 하나씩 제거하기 시작했습니다. 죄송합니다 - 머리글을 제거하면 작동이 멈췄습니다. 그런 다음 중요한 데이터를 찾으려고 청크 헤더로 청크 콘텐츠를 제거했습니다. 실제로 데이터가 필요 없다는 것을 알았을 때 나는 놀랐다. 그냥 헤더 이름 – yko

관련 문제