Search code examples
perlcpanwww-mechanize

Get url with Perl module WWW::Mechanize


I've found the following code:

use WWW::Mechanize;
use WWW::Mechanize::FormFiller;
use URI::URL;

my @go_terms=qw/GO:0006612 GO:0045862 GO:0048545 GO:0007568 GO:0046326 GO:0051901  GO:0010524 GO:0006044 GO:0032024/;
my $go_string=join("\n",@go_terms);
my $agent = WWW::Mechanize->new( autocheck => 1 );
my $formfiller = WWW::Mechanize::FormFiller->new();
$agent->env_proxy();

$agent->get('http://revigo.irb.hr/');
$agent->form_number(1) if $agent->forms and scalar @{$agent->forms};
$formfiller->add_filler( 'goList' => Fixed => $go_string);
$formfiller->add_filler( 'cutoff' => Fixed => '0.4' );
$formfiller->add_filler( 'isPValue' => Fixed => 'yes' );
$formfiller->add_filler( 'whatIsBetter' => Fixed => 'higher' );
$formfiller->add_filler( 'goSizes' => Fixed => 0 );
$formfiller->add_filler( 'measure' => Fixed => 'SIMREL' );
$formfiller->fill_form($agent->current_form);

my $request = $agent->click("startRevigo");

what I am trying to do is, once startRevigo is clicked, I want to go to the following url http://revigo.irb.hr/toR.jsp?table=1 and download the file it is giving to me. No clue about how to do this, even reading cpan manual.


Solution

  • Not tested!

    use WWW::Mechanize;
    
    my @go_terms=qw/GO:0006612 GO:0045862 GO:0048545 GO:0007568 GO:0046326 GO:0051901  GO:0010524 GO:0006044 GO:0032024/;
    my $go_string=join("\n",@go_terms);
    
    my $agent = WWW::Mechanize->new( autocheck => 1 );
    $agent->env_proxy();
    
    $agent->get('http://revigo.irb.hr/');
    $agent->submit_form(
        with_fields => {
    
            goList => $go_string,
            cutoff => 0.4
            isPValue => "yes",
            whatIsBetter => "higher",
            goSizes => 0,
            measure => "SIMREL",
        },
    );
    
    $agent->get("http://revigo.irb.hr/toR.jsp?table=1");
    $agent->save_content("your_file.r");