今日は、Wikipediaで検索するPythonプログラムを作ってみました。
Wikipediaでは、JSON形式で応答するAPIが公開されていることを知りました。
参考文献:https://ja.wikipedia.org/w/api.php
そこで、以下のようなプログラムで検索してみました。
#!/usr/bin/env python3
# coding: utf-8
# Example 08 IoT連携の基本 HTTP GET Wikipedia情報の取得
# 参考文献:https://ja.wikipedia.org/w/api.php
from sys import argv
import urllib.request
import urllib.parse
import json
keyword = 'ウィキペディア'
print('Usage:', argv[0], '検索キーワード')
if len(argv) >= 2:
keyword = argv[1]
url_s = 'http://ja.wikipedia.org/w/api.php?'
url_s += 'format=json' + '&'
url_s += 'action=query' + '&'
url_s += 'prop=extracts' + '&'
url_s += 'exintro' + '&'
url_s += 'explaintext' + '&'
url_s += 'titles='
url_s += urllib.parse.quote(keyword)
print(url_s)
try:
res = urllib.request.urlopen(url_s)
res_s = res.read().decode()
res.close()
res_dict = json.loads(res_s)
except Exception as e:
print(e)
exit()
# pages_dict = res_dict['query']['pages']
query_dict = res_dict.get('query')
pages_dict = query_dict.get('pages')
for pageid in pages_dict:
# extract = pages_dict[pageid]['extract']
pageid_dict = pages_dict.get(pageid)
extract = pageid_dict.get('extract')
if extract == None or extract == '':
print('見つかりませんでした。',pageid)
else:
print(extract.split('\n')[0])
https://github.com/bokunimowakaru/iot/blob/master/learning/example08_htget_wiki.py
以下は、実行結果です。
pi@metal:~/iot/learning $ ./example08_htget_wiki.py 百科事典
Usage: ./example08_htget_wiki.py 検索キーワード
http://ja.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&titles=%E7%99%BE%E7%A7%91%E4%BA%8B%E5%85%B8
百科事典(ひゃっかじてん、拉: encyclopaedia)とは、あらゆる科目にわたる知識を集め、これを部門別やアルフ ァベット順・五十音順などに配列し、解説を記した書物のこと。「百科」と略記されることもある。
pi@metal:~/iot/learning $
応用として、音声認識で入力した内容をWikipediaで検索し、その結果を音声合成で再生するといった使い方が考えられます。
by ボクにもわかるRaspberry Pi
https://bokunimo.net/raspi/