我有下面的代码,它工作得很好。
#!/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什么是流行的网站抓取方式?我不想被认为是一个恐龙或被困在过时的或补救的程序和战术,离开我在上个世纪。如果你能拿出一段代码,类似于第一个例子,这将是很好的。这样我就可以比较两者。
1条答案
按热度按时间ktecyv1j1#
您的文档是错误的。LWP、URI、WWW::Mechanize、HTML::TokeParser都没有被弃用。Mechanize在爬行方面一般都能很好地工作。我会用以声明方式处理HTML解析的东西来替换HTML::TokeParser,尽管-Web::Query很棒,HTML::TreeBuilder::XPath也不错。
但是,关于您的代码示例:谷歌的使用条款禁止抓取。使用他们的API代替!