Web APIとか使ってなんかやってみたいなぁと思い、やっぱりそうなりゃ今流行りのマッシュアップ(Mash up)だろうという事で、この年末年始はまっていました。
とりあえず、目指してみたのは、こんな事をやる事。
要は、GoogleとYahoo!,live Searchの検索結果から検索順位を表示するってやつ。
とりあえず、phpベースで作ってみる事に決めた。せっかく、自宅サーバーをphp4環境にしたんで、最初はphp4ベースでやってみる予定だった。
まずは、Googleの検索結果の取得からだが、最初は「Google SOAP Search API」を使う予定だったが、既に廃止になっていたらしく、後継の「Google Ajax Web Search API」を使えという事らしかった。
[ CodeZine:ひっそりと廃止になったGoogle SOAP Search API(API, google) ]「Google SOAP Search API」のWebサイトでは5日以降、新しいAPIが発行されないことが明言されている。既存のAPIは今まで通り使用できるとのこと。
でも、「Google Ajax Web Search API」は思った事が出来そうにない、1回あたりの検索件数に限りがあるし、最大件数も少ない。language指定がない~Google.comの検索になってしまうのも困ったところでした。まだ、これから拡張していくんで、そのうちもっと使えるものになるのかもしれないれど、今回はGoogleだけはAPIの使用を諦めました。
という訳で、じかにGoogleの検索をしてHTMLを解析する事にしました。まずは、以下のページを参考にしてGoogleの検索を行なってみる事にした。
そのまま、コード使えば難しい事じゃなかったんだが、なんせphp4環境という事で手間取りました。あれこれ調べまくってphp4ベースで同じ事を出来るようにするところまでいきました。
だが、結局やめました。live searchのAPIはSOAPだったし、なんだかんだでphp5ベースの方が楽そうだなという結論に達したので、あらためて以下のサイトを参考にphp5をphp4と共存させる事にしました。
ここでもはまりました。CGI版としてphp5をコンパイルしたのだけれど、出来上がったphp5コマンドで動かそうとするとうまくいかない。結局、/usr/local/php5/bin
に出来ていたphp5-cgiにシンボリックリンクを張ってphp5として動作させたらちゃんと動くようになりました。これは、これでいいのかな?
あらためて、Googleの検索からhtmlを解析して、結果を取得する処理をphp5で書きなおしました。さらに、検索結果をPear_liteを使ってキャッシュさせておくところまで作ってみました。
ちなみに、Googleの検索結果のHTMLをそのままloadHTMLで読もうとしたら、うまく解析できなくって、HTMLをXMLに整形しなおすクラスを途中で使いました。参考にしたページは以下の通りです。
長くなったので、続きは次回へ。