Как мне использовать Perl's Google :: Search для поиска определенных URL? - PullRequest
4 голосов
/ 19 сентября 2010

Модуль Google :: Search, основанный на API поиска AJAX, кажется, работает не очень хорошо, или это только я?

Например, я использую 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 ]

1 голос
/ 19 сентября 2010

У меня была похожая проблема с кириллическими запросами.И Google::Search, и REST::Google из CPAN у меня не сработали - они давали меньше результатов или не давали результатов по сравнению с ручным тестом.

В конце концов я написал модуль очистки, используя WWW::Mechanize и HTML::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" }
0 голосов
/ 19 сентября 2010

Глядя на POD для Google :: Search , похоже, что он ожидает, что вы передадите условия поиска в Web вместо URL.Я скачал тестовый сценарий из CPAN, запустил его, и он, кажется, дает ожидаемые результаты:

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...

Я понимаю, что это не дает конкретного ответа на ваш вопрос, но, возможно, он направляет васправильное направление.

...