LANG SELRCT

コードを書く場所についてはこちら

2017年12月10日日曜日

Google Custom Search APIで検索結果を取得する


Custom Search JSON/Atom API
https://developers.google.com/custom-search/json-api/v1/overview?hl=ja

これを利用するとGoogle検索結果を APIで取得できるようになります
今回はCustom Search API を使えるようにするまでの手順を書きます


実際にどのような情報を取得できるかは以下の記事に書きました





利用上の制限があるので先に書いておきます


  • 1日あたり100件の検索クエリまでは無料
  • 追加のリクエストは1000クエリあたり5ドル
  • 1日あたり最大10000クエリまで

というようなことがここに書いてありました

それを承知で試してみたい場合は以下の手順で実行できるようになるはずです
(2017/12/10現在試した手順です)



結果を取得する手順
  1. API KEYを取得する
  2. 検索エンジン ID(CSE ID)を取得する
  3. https://www.googleapis.com/customsearch/v1?key=API_KEY&cx=CSE_ID&q=検索ワード
    を開く

ではこの手順を順番にやっていきます



1. APIを取得する


まずはAPIを取得するため以下のページにアクセスします
Custom Search JSON/Atom API/Prerequisites



次に「GET A KEY」をクリックします


表示される画面の内容を読んで「Yes」を選択してNEXTをクリックします


しばらく待つと API KEY が表示されます
「DONE」をクリックして閉じます



2. 検索エンジン ID(CSE ID)を取得する


1と同じく以下のページにアクセスします
Custom Search JSON/Atom API/Prerequisites


Control Panel」のリンクをクリックします



「Add」をクリックします

新しい検索エンジンを作成します
 ①検索するサイトに「https://www.google.co.jp/」を入力します
 ②言語を「日本語」に設定します
 ③検索エンジンの名前を任意で変更します
 ④「作成」をクリックします



作成完了後「コントロール パネル」をクリックします


「検索エンジン ID」ボタンをクリックすると検索エンジン IDが表示されます
画像検索がデフォルトでオフになっているので使いたい場合は「オン」にしておきます


以上でAPI KEYと検索エンジンID(CSE ID)を取得できました


試してみる


API_KEYとCSE_IDと検索ワードを以下のurlに設定して
ブラウザのアドレスバーに入れて開くと検索結果をJSONで取得できます

https://www.googleapis.com/customsearch/v1?key=API_KEY&cx=CSE_ID&q=検索ワード


検索ワードを「栄養素」とすると以下のような結果が表示されます

itemsの中に検索結果の最初の10件の情報が入っています


{
 "kind": "customsearch#search",
 "url": {
  "type": "application/json",
  "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"
 },
 "queries": {
  "request": [
   {
    "title": "Google Custom Search - 栄養素",
    "totalResults": "1540000",
    "searchTerms": "栄養素",
    "count": 10,
    "startIndex": 1,
    "inputEncoding": "utf8",
    "outputEncoding": "utf8",
    "safe": "off",
    "cx": "CSE_ID"
   }
  ],
  "nextPage": [
   {
    "title": "Google Custom Search - 栄養素",
    "totalResults": "1540000",
    "searchTerms": "栄養素",
    "count": 10,
    "startIndex": 11,
    "inputEncoding": "utf8",
    "outputEncoding": "utf8",
    "safe": "off",
    "cx": "CSE_ID"
   }
  ]
 },
 "context": {
  "title": "Google"
 },
 "searchInformation": {
  "searchTime": 0.273824,
  "formattedSearchTime": "0.27",
  "totalResults": "1540000",
  "formattedTotalResults": "1,540,000"
 },
 "items": [
  {
   "kind": "customsearch#result",
   "title": "栄養素 - Wikipedia",
   "htmlTitle": "\u003cb\u003e栄養素\u003c/b\u003e - Wikipedia",
   "link": "https://ja.wikipedia.org/wiki/%E6%A0%84%E9%A4%8A%E7%B4%A0",
   "displayLink": "ja.wikipedia.org",
   "snippet": "栄養素(えいようそ、nutrient)とは、. (栄養学等)栄養のために摂取する物質を要素\nとして指す言葉。蛋白質、脂肪、炭水化物の三大栄養素のほかに、無機質、ビタミンなど\nを指す。 (生物学等)栄養のために摂取される物質。 生物学等では、「栄養素」と言うと、\n生物が代謝する目的で外界から吸収する物質のことを指している。栄養素は生体内で\n代謝され、生体内物質の原料やエネルギーを産生するのに利用されるとされる。 栄養学\n等では、上記の(生化学等での栄養素の他に)健康を維持するための食事由来の成分を\n含め ...",
   "htmlSnippet": "\u003cb\u003e栄養素\u003c/b\u003e(えいようそ、nutrient)とは、. (栄養学等)栄養のために摂取する物質を要素\u003cbr\u003e\nとして指す言葉。蛋白質、脂肪、炭水化物の三大\u003cb\u003e栄養素\u003c/b\u003eのほかに、無機質、ビタミンなど\u003cbr\u003e\nを指す。 (生物学等)栄養のために摂取される物質。 生物学等では、「\u003cb\u003e栄養素\u003c/b\u003e」と言うと、\u003cbr\u003e\n生物が代謝する目的で外界から吸収する物質のことを指している。\u003cb\u003e栄養素\u003c/b\u003eは生体内で\u003cbr\u003e\n代謝され、生体内物質の原料やエネルギーを産生するのに利用されるとされる。 栄養学\u003cbr\u003e\n等では、上記の(生化学等での\u003cb\u003e栄養素\u003c/b\u003eの他に)健康を維持するための食事由来の成分を\u003cbr\u003e\n含め ...",
   "cacheId": "3Ut4C2sD0UAJ",
   "formattedUrl": "https://ja.wikipedia.org/wiki/栄養素",
   "htmlFormattedUrl": "https://ja.wikipedia.org/wiki/\u003cb\u003e栄養素\u003c/b\u003e",
   "pagemap": {
    "metatags": [
     {
      "referrer": "origin-when-cross-origin"
     }
    ]
   }
  },
...2件目以降省略



パラメータに
&start=11
などを追加すれば11件目以降の結果も取得できる



おまけ


検索結果が少ない場合

試してみて検索結果が少ない場合は以下の設定を変更すると良いかもしれません


検索するサイト:追加したサイトを重視して、ウェブ全体を検索する


変更する手順

Control Panel」を開いて作成した検索エンジンを選択する(例ではGoogle)


検索するサイトで「追加したサイトを重視して、ウェブ全体を検索する」


「更新」をクリックする


参考

Custom Search JSON/Atom API
https://developers.google.com/custom-search/json-api/v1/overview?hl=ja

Using REST to Invoke the API
https://developers.google.com/custom-search/json-api/v1/using_rest?hl=ja

CSE: list
https://developers.google.com/custom-search/json-api/v1/reference/cse/list?hl=ja