Yahoo!知恵袋の検索結果RSSでQA検索サイトを作る
2006-09-14-1
[YahooHacks]
今回の YahooHacks は、
Yahoo!知恵袋(http://chiebukuro.yahoo.co.jp/)の検索結果RSSを用いた
QA検索サイトの作り方です。
前回の「Yahoo!商品検索」のハック[2006-09-13-1]とやっていることは
同じです。今回は、CGI.pm のタグ生成メソッドは使わずに、
テンプレートエンジン HTML::Template を使いました。
(一時的にデモを置いておきます。そのうち消えます。ご了承ください。
http://chalow.net/misc/yahoohacks-samp/hack_csearch.cgi)
■■■Yahoo!知恵袋の検索結果RSSでQA検索サイトを作る
Yahoo!知恵袋(http://chiebukuro.yahoo.co.jp/)では、
キーワード検索結果がRSSで提供されています。
RSSのURLの構成は以下のようになっています。
パラメタ str でエンコードした EUC-JP のキーワードを渡します。
http://search.chiebukuro.yahoo.co.jp/search/search.php?
str=[キーワード]&rss=1
これを用いてQA検索サイトを作ってみました。
■コード
Yahoo!知恵袋の検索結果RSSを用いQA検索を行うCGIです。
■Hack の実行
そのままWebサーバに置けば動作するはずです。
検索実行例を下図に示します。
参考ページ:
- Yahoo!知恵袋
http://chiebukuro.yahoo.co.jp/
- Yahoo!デベロッパーネットワーク - RSS配信
http://developer.yahoo.co.jp/rss/
- [を] Yahoo!商品検索のRSSで商品検索サイトを作る[2006-09-13-1]
関連書籍:
- Yahoo! Hacks
- みんなの知恵袋
Yahoo!知恵袋(http://chiebukuro.yahoo.co.jp/)の検索結果RSSを用いた
QA検索サイトの作り方です。
前回の「Yahoo!商品検索」のハック[2006-09-13-1]とやっていることは
同じです。今回は、CGI.pm のタグ生成メソッドは使わずに、
テンプレートエンジン HTML::Template を使いました。
(一時的にデモを置いておきます。そのうち消えます。ご了承ください。
http://chalow.net/misc/yahoohacks-samp/hack_csearch.cgi)
使用している Web API の提供が終了となったため、現在動作しません。ご了承ください。
■■■Yahoo!知恵袋の検索結果RSSでQA検索サイトを作る
Yahoo!知恵袋(http://chiebukuro.yahoo.co.jp/)では、
キーワード検索結果がRSSで提供されています。
RSSのURLの構成は以下のようになっています。
パラメタ str でエンコードした EUC-JP のキーワードを渡します。
http://search.chiebukuro.yahoo.co.jp/search/search.php?
str=[キーワード]&rss=1
これを用いてQA検索サイトを作ってみました。
■コード
Yahoo!知恵袋の検索結果RSSを用いQA検索を行うCGIです。
#!/usr/bin/perl -T use strict; use warnings; use Encode; use CGI; use LWP::Simple; use XML::Simple; use HTML::Template; my $q = new CGI; my $key = $q->param('key') || ""; Encode::from_to($key, "utf8", "euc-jp"); $key =~ s/([^0-9A-Za-z_])/'%'.unpack('H2',$1)/ge; $key =~ s/ /+/g; my $url = "http://search.chiebukuro.yahoo.co.jp/search/search.php?p=$key&rss=1"; my $r = get_cresults($url); my $template = join("", <DATA>); my $t = HTML::Template->new(scalarref => \$template, associate => $q, die_on_bad_params => 0); $t->param(results => $r); print $q->header(-charset => 'UTF-8'), $t->output(); sub get_cresults { my ($url) = @_; my $rss = get($url); my $xmlsimple = XML::Simple->new(); my $xml = $xmlsimple->XMLin($rss); if (ref($xml->{channel}->{item}) eq "ARRAY") { return $xml->{channel}->{item}; } else { return [$xml->{channel}->{item}]; } return []; } __DATA__ <html lang="ja"><head><title>search.chiebukuro (RSS)</title></head><body> <h1>search.chiebukuro (RSS)</h1> <form method="get"> <input type="text" name="key" value="<TMPL_VAR name=key>" size="20"> <input type="submit" value="search"> </form> <h2>Search Results</h2> <TMPL_LOOP name=results> <h3><a href="<TMPL_VAR name=link>"><TMPL_VAR name=title></a><br> <TMPL_VAR name=category></h3><p><TMPL_VAR name=description></p> </TMPL_LOOP> </body></html>
■Hack の実行
そのままWebサーバに置けば動作するはずです。
検索実行例を下図に示します。
参考ページ:
- Yahoo!知恵袋
http://chiebukuro.yahoo.co.jp/
- Yahoo!デベロッパーネットワーク - RSS配信
http://developer.yahoo.co.jp/rss/
- [を] Yahoo!商品検索のRSSで商品検索サイトを作る[2006-09-13-1]
関連書籍:
- Yahoo! Hacks
- みんなの知恵袋
この記事に言及しているこのブログ内の記事