2008年4月25日金曜日

Mech::Googleサーチ 試し打ち

下記参照
http://d.hatena.ne.jp/hakobe932/20070131/1170266398
参照先のコードでは気をつけないと、"syntax error" "requires explicit package name" とか出てしまう。
「;」 と「my」の欠けは注意。

あと、コード末尾のエンコードはutf-8のままならエンコード/デコード処理は不要。。
そのまま実行すると文字化けします。
下は修正後。。


#!/usr/bin/perl
use strict;
use warnings;
#http://d.hatena.ne.jp/hakobe932/20070131/1170266398
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
use Encode;
use Readonly;

sub say {print @_, "\n";}

my $mesh = WWW::Mechanize->new();

# Googleにアクセス
$mesh->get('http://www.google.com');

# 検索フォームにPerlを入力してサブミット
my $res = $mesh->submit_form(
fields => {
q => 'Perl',
}
) or die 'submitting failed';

# レスポンスを取り出してパース
my $tree= HTML::TreeBuilder::XPath->new();
$tree->parse($res->content()) or die "parsing failed";

# 結果をXPathで取り出して表示
my @nodes = $tree->findnodes( '/html/body//div[@class="g"]/a[@class="l"]' );
for my $node (@nodes) {
say $node->as_text, ' (', $node->attr('href'), ')';
}


コードここまで。

出力結果は下記。

Perl - Wikipedia (http://ja.wikipedia.org/wiki/Perl)
Perl基礎入門 (http://www.kent-web.com/perl/)
とほほのperl入門 (http://www.tohoho-web.com/wwwperl.htm)
The Perl Directory - perl.org (http://www.perl.org/)
Perl講座[入門からデータベース連携なども] (http://www.site-cooler.com/kwl/perl/
)
Amazon.co.jp: Perl - プログラミング: 本 (http://www.amazon.co.jp/Perl-%E3%83%97%
E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%B3%E3%83%B3%E3%83%9
4%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%
8D%E3%83%83%E3%83%88-%E5%92%8C%E6%9B%B8/b?ie=UTF8&node=515826)
Perl.com: The Source for Perl -- perl development, conferences (http://www.perl.
com/)
Perl講座 [Smart] (http://www.rfs.jp/sb/perl/)
Perlとは 【Practical Extraction and Report Language】 - 意味・解説 ... (http://e
-words.jp/w/Perl.html)
Perlメモ (http://www.din.or.jp/~ohzaki/perl.htm)

以上、取れました。。

0 件のコメント:

Blogger Syntax Highliter