0

我必须在多个网页上填写表格。我正在尝试获取数据,将 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;
4

1 回答 1

0

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

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

这有帮助吗?引用:

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

于 2013-04-25T08:01:05.293 回答