概要
Wikipediaの情報をまとめる時のスクレイピングについてです。BeautifulSoupを使って地道に取得するのも1つの方法ですが、簡単に取得できるライブラリーがいくつかあるようです。今回は、wikipedia-apiを使ってみました。
インストール
Pythonのライブラリーwikipedia-apiをインストールします。
pip install wikipedia-api
公式のドキュメント
使い方
「 https://ja.wikipedia.org/wiki/ChatGPT 」の本文情報を取得する例で試してみました。基本的に3ステップ(3行)となります。
基本形
import wikipediaapi
# (1)
wiki = wikipediaapi.Wikipedia(
language="ja",
user_agent="MyProject/1.0 (sample@sample.com)")
# (2)
page = wiki.page("ChatGPT")
# (3)
print(page.title) # タイトル表示
print("本文:")
print(page.text) # 本文表示
# 【出力結果】
# ChatGPT
# 本文:
# ChatGPT(チャットジーピーティー)は、OpenAIが2022年11月に公開したGPT系列の大規模言語モデルを用いる対# 話型生成AIサービスである。
#
# 概要
# ChatGPTの公開当初は大規模言語モデルとしてGPT-3.5が一般公開されていた。〜〜続く〜〜
説明メモ
- (1) Wikipediaにアクセスする準備
- language="ja"で言語指定
- user_agent: WikipediaのAPI利用には誰がアクセスしているかの情報の明示がマナーのようです。「アプリ名/バージョン (連絡先メールアドレス)」の形式がドキュメントでの推奨でした。
- (2) ページの指定
- 取得したい記事のタイトルを指定します。タイトル部分を分けて記述したほうが良いかと思いますが
- 取得したい記事のタイトルを指定します。タイトル部分を分けて記述したほうが良いかと思いますが
- (3) データの取得と表示
- 今回は取得したいページの存在がわかっているので、「取得できたら〜」みたいな分岐はありません
- page.title: タイトル
- page.text: 本文(タグ、リンクなどの不要物もありません)
取得したいページの存在の確認も exists()で簡単にできるようです。
ページの存在確認
import wikipediaapi
# (1)
wiki = wikipediaapi.Wikipedia(
language="ja",
user_agent="MyProject/1.0 (sample@sample.com)"
)
# (2)
search_term = "ChatGPT"
page = wiki.page(search_term)
# (3)
if page.exists():
print(page.title) # タイトル表示
print("本文:")
print(page.text) # 本文表示
else:
print(f"「{search_term}」ないぞ〜")
説明メモ
- (3) exists()でページの存在判定ができるようです。
search_term = "ChatGTP"として、elseが実行されるか!と試したのですが、
https://ja.wikipedia.org/wiki/ChatGTP
もしかして
ChatGPT
ではありませんか?
が存在するようですorz
開発者のリポジトリ