【问题标题】:Mechanize question regarding submit()关于 submit() 的机械化问题
【发布时间】:2011-03-13 06:31:18
【问题描述】:

我尝试在论坛上四处寻找答案,但无法弄清楚。在为需要时间进行计算的网页提交表单后,Mechanize 会等待所有计算完成(即使需要一个小时?)。好像这不会发生。我正在遍历一个创建 Mechanize 对象并提交表单并在计算完成后下载输出文件的子例程。但是,我觉得它在没有完成所有这些任务的情况下跳转到循环的下一次迭代,因为有时计算需要很长时间。有没有人有什么建议?谢谢。这是子程序

sub microinspector {
        my ($sequence, $folder) = @_;
        print STDOUT "subroutine sequence: $sequence\n";
        my $browser = WWW::Mechanize->new();
        $browser->get("http://bioinfo.uni-plovdiv.bg/microinspector/");
        $browser->form_number(1);
        $browser->field("target_sequence", $sequence);
        $browser->select("Choose an organism : ", "Mus musculus");

        $browser->submit();
        #print $browser->content();
        my @links = $browser->links();

        chdir($folder) or die "Cannot chdir to $folder";

        foreach my $link (@links) {
                #print $link->url();
                if( $link->url() =~ /csv$/i ){
                        my $result = $browser->get( $link->url() );
                        my $filename = ( $link->url() =~ /\/([^\/]+)$/ )[0];
                        print "Saving $filename\n";
                        open( OUT, ">$filename" );
                        print OUT $result->content();
                        close( OUT );
                }
        }
}

【问题讨论】:

    标签: perl mechanize bioinformatics


    【解决方案1】:

    WWW::Mechanize 可以在其构造函数中采用可选的timeout 参数(以秒为单位)(在这种情况下传递给其父类LWP::UserAgent)。我认为默认值是 180 秒。

    尝试增加它,例如:

    my $browser = WWW::Mechanize->new(
        timeout => 60 * 10,     # 10 minutes
    );
    

    请参阅timeout 方法上的LWP::UserAgent 文档,了解如何处理此问题的具体语义。大部分情况都如您所愿,但以防万一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多