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

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

  • 2008-03-31 (月) 5:57
  • Perl
  • hatena button
  • hatena count

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

<

div>

</p>

<h1>!/usr/bin/perl -w</h1>

<p>use Jcode;
use LWP::Simple qw(get);</p>

<h1>binmode STDOUT, ':encoding(utf-8)';</h1>

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

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

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

<h1>open(OUT, "> api.html");</h1>

<h1>print(OUT "$r");</h1>

<h1>close(OUT);</h1>

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

<p>}</p>

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

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

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

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

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

コメント:0

コメントフォーム
Remember personal info

トラックバック:0

このエントリーのトラックバックURL
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の検索結果から特定の箇所を抜き出す

Banners
クリエイティブ・コモンズ・ライセンス track feed
Author
Feeds

Return to page top