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: ###