0

複数の Web ページでフォームに入力する必要があります。データを取得し、html をテキストに解析して、単一のファイルに保存しようとしています。Web フォームごとに入力するフィールドが異なります。これはそのうちの 1 つのコードです。私はあと3つ持っています。提案は大歓迎です - ありがとう!

 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 では、多数のバリエーションを処理する場合、ユーザーはバッチ クエリを送信できます。ユーザーは、バリアント リストを設計されたテキスト スペースに直接貼り付けるか、クエリを含むファイルをアップロードできます。現在、1 回のバッチ クエリでのバリアントの最大数は 100,000 に制限されています。ゲノム位置および/または dbsnp rs# 形式を使用したバッチ クエリのみを許可します。染色体領域のクエリ データは許可されません。各バリアントは、次のいずれかの形式のタブ区切りデータを含む新しい行に配置する必要があります。

于 2013-04-25T08:01:05.293 に答える