2011-08-01 3 views
0

저는 Perl을 처음 접했습니다. 현재 웹 양식을 자동으로 채우고 LWP를 사용하여 제출하는 Perl 스크립트를 작성하고 있습니다. 웹 사이트 URL은 ***/something.cgi이며이 문서에는 작성해야 할 양식이 있으며 제출을 누르십시오. 그러면 채울 다른 양식이있는 다른 페이지로 이동하게되지만 웹 사이트의 URL은 그대로 유지됩니다. LWP 및 HTTP :: Request :: Form으로 양식을 채우는 것이 무슨 문제입니까?

나는 첫 번째 양식을 작성하여 제출 관리 :

$res = $ua->request($f->press("submit")); 

$res->as_string보기

my $f = HTTP::Request::Form->new($forms[0], $url); 

다음 페이지 소스를 나타내고 있지만, 채우기 위해 새로운 형태를 얻기 위해 노력 그것은 나에게 이미 가지고있는 것과 같은 형태를 주었다. 양식을 작성하고 진행하려면 다음 페이지를 어떻게 얻을 수 있습니까?

답변

2

나는 LWP::UserAgent의 하위 클래스 인 WWW::Mechanize과 그 form methods을 볼 것을 권합니다. 내 첫 번째 링크의 예에 따라 밀접하게 예를 추가

편집

:

당신이 스크립트하려고하는 형태의 어떤 페이지를 결정하기 위해 일부 있었던 파라미터 또는 쿠키를 사용하고 있어야합니다
use strict; 
use warnings; 

use WWW::Mechanize; 
my $mech = WWW::Mechanize->new(); 

$mech->get('http://google.com'); 
sleep 1; ## be nice 

$mech->submit_form(
    form_number => 0, 
    fields  => { 
     q  => 'mungo', 
    } 
); 

print $mech->content; 
+0

감사합니다. 더 구체적인 예를 제공 할 수 있을지 궁금합니다. 펄과 웹 프로그래밍에 새로운 것이었고 제공 한 링크에 예제가 없기 때문에 이해할 수 없습니다. 감사합니다 – WhiteShark88

+0

예를 들어 내 대답에 편집을 참조하십시오 – mrk

+0

고마워, 그것은 효과가있다. – WhiteShark88

0

처리 할 다중 페이지 양식 쿠키는 당신이 다시 전달할 필요가 세션 ID 나 다른 매개 변수가 설정되고 있는지

print $res->header(); 

에 반환 된 쿠키 봐. 또한

을 첫 번째의 소스를 보면 두 번째 제출이 두 번째 양식 페이지에 대한 것임을 나타내는 숨겨진 입력 유형이 있는지 확인하십시오. 또는 submit 버튼 태그의 값을 살펴보십시오. 아마도 두 번째 페이지에서 다를 수 있습니다.