知恵袋サンプルコード

質問検索(perl)

使用API

知恵袋 質問検索

構成環境 Apache + Perl
・以下のライブラリが動作する環境が必要となります。
- CGI
- LWP
- HTTP::Request
- XML::Simple

知恵袋質問検索APIを利用し、キーワードによるQ&A(質問)検索を行うためのサンプル。

ダウンロード

サンプルご利用の際は、利用規約をご覧ください。利用規約は、ダウンロードパッケージ内のLICENSE.txtファイルに記載されています。

ダウンロードはこちら (ダウンロードサイズ:約2.4KB)

コード解説

ダウンロードしたアーカイブファイルを展開すると下記のようになります。

`-- sample2
    |-- LICENSE.txt
    |-- README.txt
    `-- yjchiesearch.pl

yjchiesearch.pl

#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use LWP;
use HTTP::Request;
use XML::Simple;

#
# Yahoo! JAPAN Web APIのご利用には、アプリケーションIDの登録が必要です。
# あなたが登録したアプリケーションIDを $appid に設定してお使いください。
# アプリケーションIDの登録URLは、こちらです↓
# http://e.developer.yahoo.co.jp/webservices/register_application
#
my $appid = '<あなたのアプリケーションID>'; # <-- ここにあなたのアプリケーションIDを設定してください。

my $CHIE_SEARCH_API_HOST  = 'chiebukuro.yahooapis.jp';
my $CHIE_SEARCH_API_URL   = '/Chiebukuro/V1/questionSearch';
my $CHIE_SEARCH_API_APPID = $appid;

my $cgiObj = new CGI;
my $script_name = ($ENV{'SCRIPT_NAME'} =~ m|/([^/]*)$|)[0];

print "Content-type: text/html\n\n";

print<<EOM;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<title>知恵袋デモサイト - 質問検索(perl)</title>
</head>
<body>
<h1>知恵袋デモサイト - 質問検索(perl)</h1>
EOM

print '<form action="./' . $script_name . '">';
print '<input type="input" name="query" value="'. $cgiObj->escapeHTML($cgiObj->param('query')) . '">';
print '<input type="submit" value="search">';
print '</form>';

my $responseXML = '';
my $encodeQuery = $cgiObj->param('query');
$encodeQuery =~ s/(\W)/'%' . unpack('H2', $1)/eg;

{
    my $ua = new LWP::UserAgent;
    my $req = HTTP::Request->new(GET=>"http://${CHIE_SEARCH_API_HOST}${CHIE_SEARCH_API_URL}?appid=${CHIE_SEARCH_API_APPID}&query=${encodeQuery}");
    my $res = $ua->request($req);
    $responseXML = $res->content;
}

{
    my $xmlSimple = new XML::Simple;
    my $doc = $xmlSimple->XMLin($responseXML);
    foreach my $site (@{$doc->{'Result'}->{'Question'}}) {
        my $content = $site->{'Content'};
        my $url     = $site->{'Url'};
        print qq|<li>${content}<br><a href="${url}">${url}</a>\n|
    }
}

print<<EOM;
<hr />
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<a href="http://developer.yahoo.co.jp/about">
<img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17.gif" width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</body>
</html>
EOM

このページのトップへ