用Perl抓取网页和提交表格
这里简单介绍一下用Perl来实现抓好取网页的源代码,以及用POST的方法来提交表格,并返回结果。难的讲不来,讲讲简单的。
这里讲到的Perl模块有:
use LWP::Simple;
use LWP::UserAgent;
用perldoc查看详细的用法。
1,用perl抓取网页
如果只是要拿到某个网页,那使用 LWP::Simple 里的函数是最简单的。通过调用 get($url) 函数,就可以得到相关网址的内容。
my $url = 'http://freshair.npr.org/dayFA.cfm?todayDate=current' use LWP::Simple; my $content = get $url; die "Couldn't get $url" unless defined $content; # $content 里是网页内容,下面是对此内容作些分析: if($content =~ m/jazz/i) { print "They're talking about jazz today on Fresh Air!\n"; } else { print "Fresh Air is apparently jazzless today.\n"; }
非常简单易懂。拿网页内容是容易的,难的是用正则过滤需要的内容。
2,通过 POST提交表格
部分HTML表格使用HTML POST 向服务器提交数据,在这里你可以这样:
$response = $browser->post( $url, [ formkey1 => value1, formkey2 => value2, ... ], );
实例分析:例如在(http://www.enzim.hu/hmmtop/html/submit.html)提交一段序列并返回结果,用perl来实现。代码如下:
#!/usr/bin/perl use LWP::UserAgent; my $browser = LWP::UserAgent->new; $protein = "MSSSTPFDPYALSEHDEERPQNVQSKSRTAELQAEIDDTVGIMRDNINKVAERGERLTSI"; my $SUSUI_URL = "http://www.enzim.hu/hmmtop/server/hmmtop.cgi"; my $response = $browser->post( $SUSUI_URL, [ 'if' => $protein, ] ); if ($response->is_success) { print $response->content; } else { print "Bad luck this time\n"; }
通过分析http://www.enzim.hu/hmmtop/html/submit.html的页面可知,这个要提交的input只有一个,就是name=”if”。$protein就是要提交的序列。$response->content就是返回结果。
有点相关的文章
- Perl处理Fasta序列的又一实例 (1.000)
- 用perl匹配字符串并返回该匹配的位置 (1.000)
- 用perl统计一个六种类型的数据 (1.000)
- 如何用perl处理测序文件 (0.500)
- perl常用的内置特殊变量 (0.500)
- 两种方法查看文件的行数 (RANDOM - 0.500)
我甚至连什么是perl都不知道,只好踩个脚印证明我来过~
我也是。。。 [可爱]
我也是~~ [偷笑]
噢,自动化自动化~
恩,这个LWP模块不错~我用Perl写了个CGI程序,实现了TargetScan数据库和KEGG数据库的链接,即输入一个miRNA,可以返回这个miRNA作用的全部pathway,但是运行速度极慢,平均每个miRNA都要处理100个左右的靶基因,然后每个靶基因再去搜索相关的pathway。。柳城兄对此有无比较好的优化速度方法?
这个慢是正常的嘛。你把KEGG的数据保存在你本地数据库那就会快了。
看不懂 点广告支持下!
[握手]
可以做百度吗!
看不懂还看!..哈哈 !
支持啦。
看不懂,支持一下。
技术活 需要的是细心啊
[呲牙] [呲牙] [呲牙] [ok]
好东西
噢,自动化自动化~
功力不到啊
看不太明白啊。
#!/usr/bin/perl
use LWP::UserAgent;
open STDOUT, “>aas713s”;
my $browser = LWP::UserAgent->new;
$protein = “MGDHAWSFLKDFLAGGVAAAVSKTAVAPIERVKLLLQVQHASKQISAEKQYKGIIDCVVR”;
my $SUSUI_URL = “http://www.ebi.ac.uk/Tools/services/web/toolform.ebi”;
my $response = $browser->post( $SUSUI_URL, [ ‘sequence’ => $protein,],’tool’=>’iprscan’,’Content_Type’ => ‘form-data’,’sumbit’=>’sumbit’);
if ($response->is_success) {
print $response->content;
} else {
print “Bad luck this time\n”;
老师,您好,请帮忙看一下这个程序(始终访问不了这个网站),急盼回复,非常感激!
可以到yunbio.com提问的、、
技术活 需要的是细心啊
[擦汗] [擦汗] [擦汗]
来看。。。
需要的是细心啊
这个真不会啊,细心 学习了
顶 技术帝~~~~~~~