- 2008-03-31 (月) 5:57
- Perl

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";
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
- Newer: Perlでブックオフの店舗を検索し、結果をハッシュの配列に格納する
- Older: WordPress2.5にバージョンアップした
Comments:0
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...

