①まず必要のはgoogle account
②APIを使うならapi-keyも申請しといた方がいい、無料なら一日100query使える、ちなみにpriceはこれ:
| Search query limit (annual) | Pricing (annual) |
|---|---|
| クエリー上限(年間) | 値段(年間) |
| 20,000 | $100 |
| 50,000 | $250 |
| 150,000 | $750 |
| 500,000 | $2,000 |
| 500,000+ | Contact sales |
| ※有料でも10,000query/dayは上限 |
※支払いが開通している場合、100クエリ/日の無料APIがそのまま使える(広告ありなし選択可能)。100を超えた場合、$5/1000クエリが請求される、しかし上限を10,000クエリは変わらない。ここ参照
こちらは無料版と有料版の機能の比較、有料版は検索結果をxmlやjsonで返せて、自由にアレンジできるという最大のメリットがある。
http://www.google.com/cse/compare?hl=ja
あるサイトの 「ブラジル」 というキーワードですべての 「PDFファイル」 を 「作成日順の降順」 を検索したプログラムです。
jsonで検索結果をもらって、検索結果画面をjavascriptで作りました。
<!-- ▼ここからサイトサーチ▼ -->
<!-- 日本語を検索する場合、ソースコード自体は必ずUTF-8に保存すること -->
<div id="content"></div>
<div id="pager"></div>
<script type="text/javascript">
var innerhtml;
var pager;
var pagecount;
var startnum = 1;
var param;
var url;
param = window.location.search.substring(1);
url = window.location.href;
var tmp = url.split('?');
url = tmp[0];
if(param.length > 6){
if(param.substr(0,6)=='start='){
startnum = param.substr((param.indexOf('=')+1),(param.length-param.indexOf('=')));
}
}
//alert(startnum);
pager = '<div width=\"735\">';
innerhtml = '<table><tr><th>日付</th><th>レポート名</th></tr>';
function hndlr(response) {
for (var i = 0; i < response.items.length; i++) {
var item = response.items[i];
// in production code, item.htmlTitle should have the HTML entities escaped.
var datestr = item.pagemap.metatags[0].creationdate.substr(2,4)+'年'+item.pagemap.metatags[0].creationdate.substr(6,2)+'月'+item.pagemap.metatags[0].creationdate.substr(8,2)+'日';
innerhtml += '<tr><td>'+datestr+'</td>';//日付
innerhtml += '<td><a href=\"'+item.link+'\" target=\"_blank\">'+item.htmlTitle+'</a></td></tr>';//レポート名
}
document.getElementById("content").innerHTML = innerhtml;
pagecount = Math.ceil(response.queries.request[0].totalResults / response.queries.request[0].count);
pagecount = 10;//googleのbug,10ページ以上はerrorしか帰ってこない
for (var i = 1; i <= pagecount; i++) {
pager += '<a href=\"'+url+'?start='+(((i-1)*response.queries.request[0].count)+1)+'\">'+i+'</a> ';
}
pager += '</div>';
document.getElementById("pager").innerHTML = pager;
//alert(pagecount);
//alert(pager);
//alert(window.location.search.substring(1));
}
document.write('<script src=\"https://www.googleapis.com/customsearch/v1?key=YOUR-KEYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&cx=000000000000000000000:45abcdefghi&lr=lang_ja&q=ブラジル+filetype:pdf&callback=hndlr&sort=date:metatags-creationdate&start='+startnum+'\">');</script>
</script>
<!-- ▲ここまでサイトサーチ▲ -->
一部パラメータ説明
| パラメータ | 説明 |
|---|---|
| key | goolgeから発行されるapi key,google api consoleでsaite searchを「on」にする必要がある。https://code.google.com/apis/console/ ここでCustom Search APIを「On」にすれば、無料で100クエリー/日のでapi keyを利用できるよ、API keyはAPI Accessメニューから確認できる |
| cx | 管理画面で設定した検索エンジンのID、googleカスタム検索のマイ検索エンジンのコントロール パネルで確認できる |
| lr | 言語、ここでは日本語を設定 |
| q | 検索キーワード、ここではブラジルを設定。+filetype:pdfはPDFのみ検索。注意!ソースコードはutf-8で保存すること |
| callback | これは、検索結果がjsonオブジェクト(デフォルト,xmlもOK)で戻ったら、どのメソッドに渡すかの設定 |
| sort | date:metatags-creationdate、これはオブジェクトのある属性でソートするという書き方、PDFの結果だと、pageMapの中にmetatagsというオブジェクトがあります、その中のcreationdate日付型で降順(デフォルト)ソート、必ずpageMapの中のプロパティじゃないといけないみたい、しかも数字か日付じゃないと行けない。 書き方は sort=データ型:オブジェクト名-プロパティ名[:ソート順:強弱] |
| start | 検索結果開始位置、1ページ最大10個検索結果表示できる(1から10で調整可)、例えばstart=11は第二ページを意味する、ページングを作るとき用です。ちなみに、totalResultは100以上あっても、start=101を設定すると400エラーしか帰ってこない、googleのバグかなぁ |
0 件のコメント:
コメントを投稿