13
9

More than 3 years have passed since last update.

【Python】wikipediaのAPIを使ってデータ収集をしてみた

Last updated at Posted at 2020-11-07

はじめに

wikipediaのデータはローカルに大量にあるのでいらなかったのですが、少しだけデータが欲しいというときにwikipediaのAPIに出会ったのでその時の記録です。

環境

動作可能OS(windowsでもmacでも動きます)
┗mac OS Catalina 10.15.7
┗Widows 10
Python 3.8.3

インストール

これだけです。
pip install wikipedia

wikipediaの要約部分を収集

検索ワードを入力するとその単語に関係する記事を勝手に検索してくれます。
python3 wikipedia_data.py 検索ワード
で実行できます。
実行結果、すなわちwikipdiaの記事データはwikipedia.txtに保存されます。

検索ワードに問題があるときは、
wikipedia.exceptions.DisambiguationError: "検索ワード" may refer to:
という文の後に、候補を提示してくれるので、そのワードで再検索するとうまくいきます。

稀に長文のエラーは出ることがありますが、APIの性質上、おそらく何らかの影響で通信にエラーが出てると思います。
なので、上記のエラー以外が出てても無視して、もう一度実行すれば成功すると思います。

wikipedia_data.py
import sys
import wikipedia

# 言語を日本語に設定
wikipedia.set_lang("jp")
# テキストファイルを開く
f = open('wikipedia.txt', 'a')

args = sys.argv
word = args[1]
# 検索ワードを用いて検索
words = wikipedia.search(word)

if not words:
    print("一致なし")
else:
    #検索ワードがヒットすれば要約を取得
    line = str(wikipedia.summary(words[0]))
    f.write(word)
    f.write(line.rstrip())
    print("success!")

f.write("\n" + "EOS" + "\n")
f.close()

wikipediaAPIの使用方法

英語の公式チュートリアル↓
https://wikipedia.readthedocs.io/en/latest/code.html

だけでは味気ないので、使いそうなものを簡単に抜粋して要約してみました。
(これだけわかれば十分だと思いますが、かなり端折った部分が多いので、使いこなしたいなら自分でチュートリアルを見てください)

メソッド 概要
wikipedia.search("検索ワード", results=10) 検索ワードに対する最大10までの検索結果をリストで返します
wikipedia.summary("検索ワード", sentences=0) 検索ワードに対する記事の要約文を取得します
wikipedia.page("検索ワード") 検索ワードに対する記事全体をオブジェクトとして取得します
生成したオブジェクトに.contentをつけると記事全体をテキストデータとして取得できます

終わりに

今回もお疲れ様でした。
wikipediaのデータは大量になら簡単に手に入るけど、数十件など少しだけ欲しいときにはこの方法がいいかもしれませんね。
もし他になにか方法を知っている方がいればコメントで教えてください。
毎回思いつきで記事を書いてるので、次に何を書くかはわかりませんが、また何か書きます。
それでは。

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9