Home > Perl > PerlでGoogleMapの検索結果から特定の箇所を抜き出す

PerlでGoogleMapの検索結果から特定の箇所を抜き出す

  • 2008-03-31 (月) 5:57
  • Perl
  • hatena button
  • hatena count
  • save this page del.icio.us

Perlの練習のために、GoogleMapに検索クエリを投げて、返ってくるHTMLから特定のタグに はさまれた部分を抜き出すスクリプトを書いた。

#!/usr/bin/perl -w

use Jcode;
use LWP::Simple qw(get);

#binmode STDOUT, ':encoding(utf-8)';

sub url_encode($) {
    my $str = shift;
    $str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
    $str =~ tr/ /+/;
    return $str;
}

sub url_decode($) {
    my $str = shift;
    $str =~ tr/+/ /;
    $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
    return $str;
}

sub getShop {
    my ($query) = jcode(@_)->utf8;
    $query = url_encode($query);
    my $r = get("http://maps.google.co.jp/maps?q=$query". "&view=text");

#    open(OUT, "> api.html");
#    print(OUT "$r");
#    close(OUT);

    if($r =~ /<div class="bn"><a.*?>(.*?)<\/a>/){
        my $res = jcode($1)->utf8;
        $res =~ s/<.*?>//g;
        return $res;
    }else{
        return "Not Found!";
    }
}

print "検索語を入力:";
$input = <stdin>;
chomp $input;

my $mes = getShop($input);
print "$mes \n";

とりあえず、URLエンコード・デコードはこれから使えそうなので、メモ程度にルーチンに。

getShop()関数では、例えば「吉野家 本郷三丁目」と検索すると、検索結果として 一番上に表示される店の名前を抜き出して返してくれる。ifの条件の中をいじれば 好きな部分を抜き出せるでしょう。

単純に正規表現の練習ですね。改行も含めてマッチさせるには、後ろに「s」というオプションを つけると良い模様。結局必要なかったけどw

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.riywo.com/2008/03/31/055714/trackback
Listed below are links to weblogs that reference
PerlでGoogleMapの検索結果から特定の箇所を抜き出す from As a Futurist...

Home > Perl > PerlでGoogleMapの検索結果から特定の箇所を抜き出す

Tag Cloud
Amazon
Banners
フィードメーター - As a Futurist... Creative Commons License track feed スカウター : As a Futurist...

Return to page top