Perl并行机械化多个网页

时间:2013-04-24 21:08:31

标签: perl mechanize web-scraping

我必须在多个网页上填写表单。我正在尝试获取数据,将html解析为文本,并将其存储在单个文件中。每个网络表单都有不同的字段需要填写;这是其中一个的代码。我还有三个。建议表示赞赏 - 谢谢!

 use strict;
 use warnings;
 my $timeout=40;
 use WWW::Mechanize;
 use HTML::TreeBuilder;
 use HTML::FormatText;
 use HTML::Parser;
 use autodie qw/ open close /;
 use 5.012;
 use Win32::IE::Mechanize;
 use Time::HiRes 'sleep';
 my $m = WWW::Mechanize->new(autocheck => 1);
 my $browser = Win32::IE::Mechanize->new(visible => 1);
 my $snp = "rs111";
 my $content= $browser->get("http://snp-nexus.org/index.html");
 my $html = $browser->content;
 $browser->form_name ('snpnexus');
 $browser->field('batch_text', 'dbsnp rs111');
 $browser->tick('ensembl', "ensembl");
 $browser->tick('refseq','refseq');
 $browser->tick('ucsc','ucsc');
 $browser->tick("sift",'sift');
 $browser->tick("polyphen",'polyphen');
 $browser->tick("chb",'chb');
 $browser->tick("chd",'chd');
 $browser->tick("tfbs",'tfbs');
 $browser->tick("consv",'consv');
 $browser->tick("gwas",'gwas');
 $browser->tick("indel",'indel');
 $browser->tick("mirbase" ,'mirbase');
 $browser->tick('gad','gad');
 $browser->tick('cnp' , 'cnp' );
 $browser->click_button('value', 'RUN');
 for (0 .. $timeout*20) {
 last if $browser->{agent}->ReadyState >=5;
 sleep 0.1;
 }
my $html2 = $browser->content;

 my $Format =HTML::FormatText->new();
 my $TreeBuilder =HTML::TreeBuilder->new();
 $TreeBuilder->parse($html2);
 my $parsed= $Format->format($TreeBuilder);

print $parsed;

1 个答案:

答案 0 :(得分:0)

您无需使用Perl和Mechanize来提交批量查询。他们的指南页面详细介绍了如何使用制表符分隔文件提交信息批处理请求。

http://snp-nexus.org/guide.html

这有帮助吗?引用:

  

SNPnexus允许用户在处理大量变体时提交批量查询。用户可以将变体列表直接粘贴到设计的文本空间中,也可以上传包含查询的文件。目前,我们将单个批处理查询中的最大变体数限制为100,000。我们只允许使用基因组位置和/或dbsnp rs#格式进行批量查询。不允许染色体区域查询数据。每个变体必须位于换行符分隔数据的新行上,并采用以下格式之一: