[perl] Lingua::JA::Expand::DataSource::GoogleWebSearchっていうの書いた

[perl] Lingua::JA::Expand::DataSource::GoogleWebSearchっていうの書いた

手軽に関連語を取得するモジュール - ダウンロードたけし(寅年)の日記

Lingua::JA::Expand は愛用させて頂いているperl moduleですが、近年のAPI不正利用対策の影響でYahoo!APIの利用規約が変更になります。

  • 検索Web APIにて新プランをリリースしました - Yahoo! JAPAN Tech Blog
  • xデーは2013年3月31日。Yahoo!プレミアム会員だと500回/day。これではちょっとだけ少ないし...。 という事で、Lingua::JA::Expand::DataSource::xxx を書けば使えそうなので書いてみた。

  • clicktx/Lingua-JA-Expand-DataSource-GoogleWebSearch · GitHub
  • 基本的にはWeb::Scraperでレスポンスを解析しているだけ。使うには Lingua::JA::Expandを継承したMyExpandクラスを作って、datasourceメソッドをオーバーライドする。

    package MyExpand;
    
    use base qw(Lingua::JA::Expand);
    
    # method overriding.
    sub datasource {
        my $self = shift;
        $self->_class_loader( datasource => 'DataSource::GoogleWebSearch' );
    }

    問題点

    googleの規約には

    本サービスを不正に利用しないでください。たとえば、本サービスの妨害や、Google が提供するインターフェースおよび手順以外の方法による本サービスへのアクセスを試みてはなりません。

    とあります。しかし、以前の規約である利用規約のアーカイブには、

    5.3 Google が提供するインタフェース以外の手段で、本サービスのいずれにもアクセスしないこと(またはアクセスを試みないこと)に同意するものとします。ただし、Google との別個の契約において明確な許可を受けた場合は除きます。特に、ユーザーは、いかなる本サービスについても、いかなる自動化された方法(スクリプトやウェブ クローラーの利用によるものを含みます)によりアクセスせず、アクセスを試みないことに同意し、また、本サービスに関して提示されるいかなる robots.txt ファイルにおける指示に従うものとします。

    と記されていたものが削除されているので、getリクエストで(botがアクセスしても)なら良くなったとも見える。いずれにしろ解釈の違いでどっちとも取れそうな気はするけど、普通に考えればアウトかな。

    あと、とりあえずokだとしてもそこそこのリクエストでアクセス拒否されますので実用性に欠けます。

    google

    某中華製検索エンジンには利用規約にも書いていないので、使うならそっちの方がいいかもね。Web::Scraperのprocessをちょっと変えればすぐに出来るはず。

    関連リンク

  • Takeshi Miki / Lingua-JA-Expand - search.cpan.org