ホーム » スタッフ » 斉藤徹 » Google検索をPerlでやってみる

2016年5月
« 4月   6月 »
1234567
891011121314
15161718192021
22232425262728
293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

Google検索をPerlでやってみる

卒研でデータ検索のプログラムを作ってもらおうとしているが、 Google Search API などは、1日100回制限もあるので、 少しマナーが悪いけど、LWPでアクセス。 UserAgent が libwww-perl だと検索を拒否されるので、一工夫。

#!/usr/bin/perl
use LWP::Simple ;
use Jcode ;
########################
# LWP でアクセス       #
########################
# ユーザエージェントを libwww-perl から変更しないとGoogleに拒否される。
my $ua = LWP::UserAgent->new(
   agent => 'Mozilla/5.0 (Windows NT 6.1; WOW64;
      Trident/7.0; NP06; rv:11.0) like Gecko' ) ;
# 問い合わせ文字
my $query = '猫 OR ネコ' ;
# 問い合わせ文字をURLエンコード
$query =~ s/([^ 0-9a-zA-Z])/'%'.unpack('H2',$1)/eg ;
$query =~ s/ /+/g ;
print $query."\n" ;
# 問い合わせのURLを作る
my $query_url = 'http://www.google.co.jp/search'
.'?hl=ja&q='.$query.'&lr=' ;
print $query_url."\n" ;
# 問い合わせを実行
my $response = $ua->get( $query_url ) ;
# 問い合わせ失敗時の処理
die $response->status_line
   unless( $response->is_success ) ;
my $content = $response->content ;
################################
# 検索から必要な情報を抜き出す #
################################
# 参考: http://dqn.sakusakutto.jp/2010/06/perlhtml.html
use HTML::TreeBuilder ;
my $tree = HTML::TreeBuilder->new ;
$tree->parse( $content ) ;
my @items = $tree->look_down( 'class' , 'st' ) ;
foreach my $item ( @items ) {
   print "-------------\n" ;
   print $item->as_text."\n" ;
}
### Local Variables: ###
### mode: perl ###
### End: ###