如何使用Perl的Google :: Search查找特定的URL?

时间:2010-09-19 00:11:27

标签: perl google-api perl-module

基于AJAX Search API的Google :: Search模块似乎效果不佳,或者仅仅是我?

例如,我使用firefox搜索google:http://bloggingheads.tv/forum/member.php?u=12129

它带来了结果。

但是当我以这种方式使用模块时:

$google_search = Google::Search->Web ( q => "http://bloggingheads.tv/forum/member.php?u=12129" );
@result =  $google_search->all;

我在阵列中什么都没得到。

有什么想法吗?

似乎这个API没有带来相同的结果,比如手动搜索,我错过了什么?

2 个答案:

答案 0 :(得分:1)

我对西里尔语查询有类似的问题。 CPAN的Google::SearchREST::Google都不适用于我 - 与手动测试相比,它们回报的结果更少或没有。

最后我使用WWW::MechanizeHTML::TreeBuilder编写了一个抓取模块。

以下是获取结果统计信息的示例:

my $tree = HTML::TreeBuilder->new_from_content($content);

if (my $div = $tree->look_down(_tag => 'div', id => 'resultStats')) {
    my $stats = $div->as_text();
}
else { warn "no stats" }

答案 1 :(得分:0)

查看Google::Search的POD,看起来它希望您将搜索字词传递给Web,而不是网址。我从CPAN下载了test script,运行它,它似乎产生了预期的结果:

use strict;
use warnings;
use Google::Search;

my $search = Google::Search->Web(q => "rock");
my $result = $search->first;
while ($result) {
    print $result->number, " ", $result->uri, "\n";
    $result = $result->next;
}
print $search->error->reason, "\n" if $search->error;

__END__

0 http://www.rock.com/
1 http://en.wikipedia.org/wiki/Rock_music
2 http://en.wikipedia.org/wiki/Rock_(geology)
3 http://rockyourphone.com/
4 http://rockhall.com/
5 http://www.co.rock.mn.us/
6 http://www.co.rock.wi.us/
7 http://www.rockride.org/
etc...

我意识到这并没有具体回答你的问题,但也许它会引导你朝着正确的方向前进。