芋の独り言

当ブログへのアクセスは当ブログのプライバシーポリシーに同意したものとみなします.

Python(requests)でWikipedia検索を

www.mediawiki.org

以上のサンプル コードのURLをちょこっと変えたり,後で処理しやすいように少しばかり整形しただけです.


import requests,pprint

def wiki_search(query):
    wiki = "https://ja.wikipedia.org/w/api.php"

    params = {
        "action": "opensearch",
        "namespace": "0",
        "search": query,
        "limit": "5",
        "format": "json",
        "profile": "strict"
    }

    res = requests.get(url=wiki,params=params).json()
    if len(res[1]) > 0:
        data = []
        for no in range(len(res[1])):
            data.append({"word":res[1][no],"abstract":res[2][no],"url":res[3][no]})
        
        pprint.pprint(data, indent=4)
        return data
    else:
        print("not found")
        return []

wiki_search(input('search word:'))

"profile"を"strict"とすると検索ワードと完全一致したものがタイトル文に含まれているページのみを抽出するようになります. 例えば,”平沢進”で行うと,

search word:平沢進
[   {   'abstract': '',
        'url': 'https://ja.wikipedia.org/wiki/%E5%B9%B3%E6%B2%A2%E9%80%B2',
        'word': '平沢進'}]

となります.デフォルト設定だと,'平沢進'以外にも '平沢勝栄', '平沢大河', '平沢いずみ', '平沢市'がヒットします. 他の例では,

search word:んんん
not found
search word:ヤバい
[   {   'abstract': '',
        'url': 'https://ja.wikipedia.org/wiki/%E3%83%A4%E3%83%90%E3%81%84',
        'word': 'ヤバい'},
    {   'abstract': '',
        'url': 'https://ja.wikipedia.org/wiki/%E3%83%A4%E3%83%90%E3%81%84%E6%A4%9C%E4%BA%8B_%E7%9F%A2%E5%A0%B4%E5%81%A5%E3%80%9C%E3%83%A4%E3%83%90%E3%82%B1%E3%83%B3%E3%81%AE%E6%9A%B4%E8%B5%B0%E6%8D%9C%E6%9F%BB%E3%80%9C',
        'word': 'ヤバい検事 矢場健〜ヤバケンの暴走捜査〜'},
    {   'abstract': '',
        'url': 'https://ja.wikipedia.org/wiki/%E3%83%A4%E3%83%90%E3%81%84T%E3%82%B7%E3%83%A3%E3%83%84%E5%B1%8B%E3%81%95%E3%82%93',
        'word': 'ヤバいTシャツ屋さん'}]

という感じです.