開発ブログ

ページメニュー

<< phpCodeGenieで、テーブル編集のPHPを自動生成 | main | YouTube出力タグIE7での不具合 >>

カレンダー

<< August 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>

  • スクレイピング あまり知られてないけどこの曲どう?
  • あまり知られてないけど、この曲どう?
    という、コンテンツを作ってみました。

    これは、ユーザが、あまり知られて無いけどオススメ!という曲を、Youtubeのアドレスとともに投稿し、知られてないけどいい曲!てヤツをみんなで共有しよう、というサービスです。

    その中で『マニア度』というパラメータの取得に、ちょっとマッシュアップ的なことをしてみました。これは、ミュージシャン名と楽曲名でGoogle検索をかけて、その検索結果数をもとにマニア度を決める、というものです。

    開発の経緯は以下。

    まず、Google SOAP Search APIを使おうと思ったのですが、Google AJAX Search APIが出たことでサービス停止になってるみたいです。今回はAJAX関係ないし、利用回数に制限があるし、日本語通すのに難があるとのことなので、この使用を諦めました。

    次に、Yahoo! APIを試そうと思ったのですが、レスポンスを見てみると、結果件数は10件で、最大が50件、とのこと。これでは今回の目的にそぐいません。。

    というわけで、例のごとく、スクレイピングをすることにしました。

    まず、Googleにキーを投げ、その結果のinnerTextから

    …に一致する日本語のページ約 XXXXXX 件中

    という箇所を抜き出します。

    このあたりは、wikipediaで問題集を作るでもやってるので、もう慣れたものです。数字該当箇所『[0-9]+』を取得するといろいろと面倒なので、<b>タグに含まれているもので考えます。但し、1,000件以上の結果を返すとカンマが入るので、一度カンマをnullに置換します。以上を踏まえて組み上げたソースは大体こんな感じ。
    $htmlText = @file_get_contents( "http://www.google.co.jp/search?q=".urlencode("対象文字列") );
    $htmlText = str_replace(",","",$htmlText);
    $pattern = '/<strong>[0-9]+<¥/strong>/';
    preg_match($pattern, $htmlText , $matches, PREG_OFFSET_CAPTURE);
    $mania = $matches[0][0];
    これによって、変数$maniaの値が取得できたはずです。

| 開発関連 | 23:32 | comments(0) | trackbacks(0) |


コメント

コメントする

この記事のトラックバックURL

http://blog.24th.jp/trackback/925240