Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでウィキペディアのインフォボックスからテキストを取得する方法

この記事では、PythonのBeautifulSoup(bs4)requestsライブラリを使って、ウィキペディアのインフォボックス(Infobox)からテキストを取得する方法を解説します。所要時間はわずか10分ほど。手順はシンプルなので、Webスクレイピング初心者の方でも安心して取り組めます。

必要なライブラリのインストール

まず、bs4requestsをインストールしましょう。以下のコマンドを実行してください。

pip install bs4
pip install requests

テキスト取得までの手順

インフォボックスから目的のテキストを取得するコードは、次の流れで作成します。

  • bs4モジュールとrequestsモジュールをインポートする
  • requests.get()メソッドで、データを取得したいページにHTTPリクエストを送信する
  • レスポンスのテキストをbs4.BeautifulSoupクラスでパースし、変数に格納する
  • ウィキペディアのページを開き、取得したい要素を開発者ツール(検証機能)で確認する
  • bs4が提供する適切なメソッド(find()など)で要素を検索する

サンプルコード

それでは、実際のコードを見てみましょう。ここでは例として、英語版ウィキペディアの「India(インド)」ページから標語(motto)を取得します。

# モジュールのインポート
import requests
import bs4

# URL
URL = "https://en.wikipedia.org/wiki/India"

# リクエストの送信
response = requests.get(URL)

# レスポンスのパース(html.parserを指定)
soup = bs4.BeautifulSoup(response.text, 'html.parser')

# パース済みのHTMLを取得できました。
# ここでは、ページから「標語(motto)」を取得します。
# 要素の構造は以下の通りです。
#   table(class="infobox")
#     └ 3番目のtr に標語が含まれる

# インフォボックス(table)の取得
infobox = soup.find('table', {'class': 'infobox'})

# 3番目の行(tr)要素を取得
third_tr = infobox.find_all('tr')[2]

# 3番目の行から最初のa要素とdiv要素を探し、必要なデータを取得
first_a = third_tr.div.find('a')
div = third_tr.div.div

# 標語を組み立て
motto = f"{first_a.text} {div.text[:len(div.text) - 3]}"

# 標語を出力
print(motto)

ポイントは、パーサーとして'html.parser'を指定することです。これにより、取得したHTML文字列をBeautifulSoupが解析できるオブジェクトに変換してくれます。

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

Satyameva Jayate "Truth Alone Triumphs"

これはインドの国の標語「サティヤメーバ・ジャヤテー(真理のみが勝つ)」です。コードの流れを整理すると、リクエスト送信 → HTMLパース → 目的の要素を検索 → テキスト抽出という、Webスクレイピングの基本ステップそのままになっています。

まとめ

このように、ウィキペディアのページで要素を検証しながらfind()find_all()で該当箇所を特定すれば、インフォボックス内の任意のデータを自由に取得できます。URLや行番号を変えるだけで、他のページ・他の項目にも簡単に応用できるので、ぜひいろいろ試してみてください。本チュートリアルについて質問がある場合は、コメント欄でお気軽にお尋ねください。

  1. 【Python】Tkinterでラベルのテキストを削除する方法をわかりやすく解説

    Tkinterは、PythonでGUIベースのアプリケーションを作成・開発するための標準ライブラリです。この記事では、何らかのテキストが表示されているラベルから、そのテキストを削除する方法を解説します。 ラベルからテキストを削除するには、ラベルの表示を切り替えるトリガーとして機能するボタンを作成します。具体的には、config()メソッドを使ってラベルのtext属性を空の文字列に書き換えます。 サンプルコード # Tkinterライブラリをインポート from tkinter import * # tkinterフレームのインスタンスを作成 win = Tk() # ウィンドウのサイズを

  2. Pythonでウィキペディアのデータを抽出する方法を徹底解説

    この記事では、Pythonを使ってウィキペディアのデータを抽出する方法を詳しく解説します。PythonはWebスクレイピングの分野で広く活用されており、Webサイトからメタ情報を収集するツールの開発に非常に適した言語です。 本記事では、Wikipedia APIとwikipediaライブラリを使用して、ウィキペディアのソースURLからデータを取得します。APIを利用することで、指定したURLから簡単にデータをフェッチでき、その後、対象のURLに対してメソッドを呼び出して、取得した情報を画面に出力することができます。 事前準備:wikipediaライブラリのインストール ウィキペディアからデータ