Perl -机械化

fivyi3re  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(221)

我有下面的代码,它工作得很好。

#!/usr/bin/perl -w
    use strict;
    use LWP 6.03;
    use URI;

    my $browser=LWP::UserAgent->new;

    my $url=URI->new ( 'http://www.google.com/search');

    $url->query_form(
        'h1'=>'en',
        'num'=>'100',
        'q'=>'glass',
    );

    my $response=$browser->get($url,
        'User-Agent' => 'Mozilla/4.76 [en] (win98; U)',
        'Accept' => 'image/gif, image/x-bitmap, image/jpeg, image/pjpeg,image/png,*/*',
        'Accept-Charset' => 'iso-8859-1,*',
        'Accept-Language' => 'en-US',
    );

    if ($response->content=~m/glass/i){
        print "Success";
        open (GGLASS,">gglass");
        print GGLASS $response->content;
    } else {
        print "complete failure";
    }

我有另一段代码也能很好地工作。它使用以下代码:

#!/usr/bin/perl -w
     use strict;
     use WWW::Mechanize;
     use HTML::TokeParser;

当我在cpan上查找代码的文档时,它告诉我我正在使用的库已被弃用,尽管它可以在我的系统中工作,编程的风格正在被放弃。2它引用了我从未用过的东西,我不知道它是否也会很快被放弃。3什么是流行的网站抓取方式?我不想被认为是一个恐龙或被困在过时的或补救的程序和战术,离开我在上个世纪。如果你能拿出一段代码,类似于第一个例子,这将是很好的。这样我就可以比较两者。

ktecyv1j

ktecyv1j1#

您的文档是错误的。LWP、URI、WWW::Mechanize、HTML::TokeParser都没有被弃用。Mechanize在爬行方面一般都能很好地工作。我会用以声明方式处理HTML解析的东西来替换HTML::TokeParser,尽管-Web::Query很棒,HTML::TreeBuilder::XPath也不错。
但是,关于您的代码示例:谷歌的使用条款禁止抓取。使用他们的API代替!

相关问题