Fusic 平田です。
1回くらいはさっさと当たれーとか思ってたら、ここまで引っ張りました。
前提
本題の前に。
数日前に弊社の化学系新卒君が書いたAmazon APIの記事。
これとの繋がりが微妙にあるような話です。
要は商品検索をいろいろ調べたり調べてもらったりしていたのです。
Amazonだと多種多様の商品調べられてすごく便利、なんですが。
1時間で2000アクセス~だと、あまり思い切ってリクエスト投げられない。
# amazletでも最近引っかかっていましたし。
てことでGoogle先生に頼ってみたところ、思いのほかいい感じだったのでご紹介。
Google Base Data API
Google Product Searchと言えばピンと来る人もいるでしょうか。
旧Froogleだったりしながら未だにbetaなのですが。
このデータ群を検索するためのAPIがGoogle Base Data APIです。
# 商品に限らずいろいろ検索できます。
とりあえず使ってみる
# 以下のリンクはIEやFirefoxで開くとより分かりやすいです。
仕組みは単純で、クエリを投げたら結果がFeedで返ってきます。
例えば「モンスターハンターポータブル」で検索してみると
www.google.com/base/feeds/snippets/?bq=モンスターハンターポータブル
こんな感じです。
突っ込んだ使い方
bq=で渡す値をいろいろ変えることで、いろいろ検索できます。
例えば中古品だけを探したい場合。
スペース空けて後ろに[condition:used]を追加すればOK。
「モンスターハンターポータブル」を中古のみ検索
値段で絞りたい場合は[price >= 2000 JPY]とか付ければいいです。
「モンスターハンターポータブル」を2000円以上で検索
これらは組み合わせて使えるので[condition:new][isbn][price <= 1000 JPY]とか後ろに付ければ
「デジタルカメラで新品でISBNコード持って(書籍かCDあたり)て1000円以内」
とかもできます。
更に値段でソートしたければ後ろにorderbyとsortorderを渡せばいいです。
「更に値段の昇順でソートした結果」
プログラムで取ってくる
単にリクエスト投げてFeedを受け取るだけなので、割と簡単です。
例えば引数でクエリの値を渡すようなプログラムだとこんな感じになります。
#!/usr/bin/env perl use warnings; use strict; use Furl; use XML::Feed; use URI::Escape; if (@ARGV != 1) { die 'Usage: perl /path/to/snippet.pl [bq parameter]'; } # 引数を受け取る my $query = shift; # Furl初期化 my $furl = Furl->new( agent => 'Sample script for Google Base Data API', timeout => 10, ); # リクエスト送信 my $request_url = 'http://www.google.com/base/feeds/snippets/'; my $res = $furl->get($request_url . '?bq=' . uri_escape($query)); # レスポンスのXMLをパース my $feed = XML::Feed->parse(\$res->content); # SnippetのURLとタイトルを表示 foreach my $entry ( $feed->entries ) { my $snippet_url = $entry->id; my $title = $entry->title; print "$snippet_url : $title \n"; } exit; |
で、実行すると
debility@xebius:~/works$ perl ./snippet.pl "デジタルカメラ [condition:new][isbn][price <= 1000 JPY]" http://www.google.com/base/feeds/snippets/9861142365767353685 : 55才から楽しむデジタルカメラで写真工房 Windows XP版 お父さんお母さんのための 押すだけ撮影から卒業・デジカメで思い出を残そう http://www.google.com/base/feeds/snippets/8908453582924256996 : デジタルカメラとパソコンを合わせて使える本 http://www.google.com/base/feeds/snippets/12581094022531619238 : デジタルカメラ批判序説 あるいは、デジタルカメラで写真は撮れない http://www.google.com/base/feeds/snippets/1086636419406988656 : FMVでもっと楽しむデジタルカメラ わかりやすい図解入り http://www.google.com/base/feeds/snippets/13607998448764488416 : デジタルカメラ進化論 http://www.google.com/base/feeds/snippets/10565006307493625118 : デジタルカメラで「趣味」を撮ってらくらく印刷 http://www.google.com/base/feeds/snippets/13954829398014624305 : 大人のためのはじめてのデジタルカメラ 賢い選び方と快適活用術 http://www.google.com/base/feeds/snippets/16925320360818721412 : デジタルカメラエクスプレス Vol.1 http://www.google.com/base/feeds/snippets/13769101776078837942 : デジタルカメラエクスプレス Vol.2 http://www.google.com/base/feeds/snippets/11531105340749645450 : デジタルカメラLabs Vol.1 http://www.google.com/base/feeds/snippets/16563827664371922494 : いっきにわかるデジタルカメラの買い方・使い方―あなたのパソコンライフをいっきにひろげるデジタルカメラのすべて http://www.google.com/base/feeds/snippets/15904047532666634991 : 今日から上達デジタルカメラスーパー活用! http://www.google.com/base/feeds/snippets/8964847794878919955 : デジタルカメラ選び方・撮り方・楽しみ方 最新43機種の○と×がイッキにわかる! http://www.google.com/base/feeds/snippets/7419790109938360232 : デジタルカメラマガジン No.4 http://www.google.com/base/feeds/snippets/6668800394078123731 : Best GearデジタルカメラSpecial ミラーレス一眼の真価キャッチせよ!激変のコンデジ http://www.google.com/base/feeds/snippets/5458330732187518314 : デジタルカメラマガジン Vol.16 http://www.google.com/base/feeds/snippets/3282137698886167565 : デジタルカメラを始めよう http://www.google.com/base/feeds/snippets/16178408780302372761 : こんなに簡単デジタルカメラ徹底活用術 撮影・プリント・レタッチ・Web・デジカメの基本がよくわかる!すぐできる! http://www.google.com/base/feeds/snippets/15687552409826306759 : 55歳から楽しむデジタルカメラで写真三昧 http://www.google.com/base/feeds/snippets/15331179909448343256 : デジタルカメラを始めよう http://www.google.com/base/feeds/snippets/6890264039679668486 : こんなに簡単デジタルカメラ&デジカメ写真のためのパソコン活用術 日本でいちばんやさしく丁寧な解説本 http://www.google.com/base/feeds/snippets/6673485326686974641 : デジタルカメラを始めよう―For Windows & Macintosh (2002年版) http://www.google.com/base/feeds/snippets/5869285652009149385 : デジタルカメラを始めよう (2003年) http://www.google.com/base/feeds/snippets/3661117677961004259 : 中高年のための最新デジタルカメラ使いこなし術 http://www.google.com/base/feeds/snippets/12355831548414530192 : 超図解ビギナーズデジカメ |
てな具合です。
他の言語でも実装は非常に簡単でしょう。
制限
リクエスト制限については
code.google.com/apis/base/faq.html#Limits
> The Google Base data API supports up to approximately 5 queries per second, per user.
てことで秒間5クエリくらいまでOKなので、だいぶ思い切って投げられます。多い日も安s
てことで
次の方にバトンタッチ。