Categorized | 数据分析

Tags |

用Perl抓取网页和提交表格

Posted on 25 二月 2010 by 柳城 ,阅读 820

这里简单介绍一下用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抓取网页和提交表格 | 柳城

赞助商

21条评论 于 “用Perl抓取网页和提交表格”

  1. 万戈 万戈 Says:

    我甚至连什么是perl都不知道,只好踩个脚印证明我来过~

    [回复]

    番茄
    番茄 回复:

    我也是。。。 [可爱]

    [回复]

    Junan
    Junan 回复:

    我也是~~ [偷笑]

    [回复]

  2. 路人假 路人假 Says:

    噢,自动化自动化~

    [回复]

  3. D-Horse D-Horse Says:

    恩,这个LWP模块不错~我用Perl写了个CGI程序,实现了TargetScan数据库和KEGG数据库的链接,即输入一个miRNA,可以返回这个miRNA作用的全部pathway,但是运行速度极慢,平均每个miRNA都要处理100个左右的靶基因,然后每个靶基因再去搜索相关的pathway。。柳城兄对此有无比较好的优化速度方法?

    [回复]

    柳城
    柳城 回复:

    这个慢是正常的嘛。你把KEGG的数据保存在你本地数据库那就会快了。

    [回复]

  4. 秦大少 秦大少 Says:

    看不懂 点广告支持下!

    [回复]

  5. www.taobao.com www.taobao.com Says:

    可以做百度吗!

    [回复]

  6. 武汉SEO 武汉SEO Says:

    看不懂还看!..哈哈 !

    [回复]

  7. 皮肤保养 皮肤保养 Says:

    支持啦。

    [回复]

  8. 传奇外挂下载 传奇外挂下载 Says:

    看不懂,支持一下。

    [回复]

  9. 丽水生活网 丽水生活网 Says:

    技术活 需要的是细心啊

    [回复]

  10. 电脑资讯网 电脑资讯网 Says:

    [呲牙] [呲牙] [呲牙] [ok]

    [回复]

  11. 解酒药 解酒药 Says:

    好东西

    [回复]

  12. 赣州SEO 赣州SEO Says:

    噢,自动化自动化~

    [回复]

  13. 去黑头 去黑头 Says:

    功力不到啊

    [回复]

  14. 美丽说 美丽说 Says:

    看不太明白啊。

    [回复]

  15. 西瓜葫芦 西瓜葫芦 Says:

    #!/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提问的、、

    [回复]

  16. 笑熬浆糊 笑熬浆糊 Says:

    技术活 需要的是细心啊
    [擦汗] [擦汗] [擦汗]

    [回复]

Leave a Reply

广告招租

[强] [握手] [可爱] [ok] [呲牙] :) [偷笑] [流泪] [疑问] [亲亲] [擦汗] [得意] [衰] [可怜] [抱拳] [坏笑] more »

无觅相关文章插件,快速提升流量