Wednesday, July 23, 2008

[CPAN] WWW::Mechanize

때때로 Web-page 의 입력 폼에 query를 던져 그에 대해 프로세싱 된 결과가 필요한 경우가 있다. 문제는 대량의 query에 대해 같은 작업을 반복해야 하는 경우인데, 대여섯번 정도의 반복 정도까지는 처리할 수 있겠지만, 수십 수백번 반복이 필요한 경우라면 자동화하지 않고는 곤란하다.

Large scale data processing이 일상화된 생물학 계열 연구자들은 이런 상황에 매우 빈번하게 노출된다. 예를 들면, 관련된 gene 이나 protein에 대한 BLAST 결과를 얻고자 하는 경우, 관련된 gene set에 대한 web-server의 결과를 얻고자 하는 상황이다. 주변의 연구자들 얘기를 들어보면 실제로 생물학 실험실에서는 이런 작업을 '수작업' 으로 몇일 밤을 세가면서 컨트롤+C, 컨트롤+v 키를 눌러제끼며 web-server의 결과를 정리하는 경우가 있다고 한다.

WWW::Mechanize는 이런 상황에 사용하기에 적합한 perl package다.

기본적인 사용 틀은 아래와 같다.

Use WWW::Mechanize;
my $mech->WWW::Mechanize->new();
my $url='http:// address of your interest';
$mech->get($url);

my $field={

'field1 id'='good',
'field2 id'='bad'

};
my $r=$mech->submit_form(

form_number=>1,
fields=>$field;

);
my $result=shift;
print $result->content;