11
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【簡単】PythonでWikipediaをWebスクレイピングしてみよう【初心者向け】

Posted at

こんにちは。

せら⇒だいひょー🐯です。

僕のTwitterアカウント
(https://twitter.com/seradaihyo)
では、

未経験からエンジニアを目指す方に向けて日々発信しています。

今回はPythonでWikipediaのスクレイピングを行う方法を記事にしたいと思います。

それでは始めていきましょう。

Pythonでスクレイピングをする上で必ず使うサードパーティ製ライブラリが二つあります。

それが

・Requests
・BeautifulSoup

です。

それぞれ簡単に説明すると、

Requests
⇒URLを開くためのライブラリ

BeautifulSoup
⇒HTMLからデータを抽出する

といった感じです。

Requestsでページを開いて、BeautifulSoupでデータを取ってくるイメージです。

Pythonコードの先頭に、この二つのライブラリをインポートするためのコードを書いておきます。

wikipedia.py
import requests,bs4

#■WikipediaのPython記事をスクレイピング

今回は、wikipediaのPython記事をスクレイピングして目次を表示するアプリを作ります。

アプリと言っても記述するコードはたったの7行なので、安心してください。

まず、wikipediaでPythonの記事を検索します。

イメージ.jpeg

このURLをコピーして、以下のようにURLの変数に入れます。

wikipedia.py
url = 'https://ja.wikipedia.org/wiki/Python'

そしてそのURLのページを開く次の呪文を唱えます。

wikipedia.py
res = requests.get(url)

resは変数なので名前は自由です。
勿論1と2は次のように一行で書くことも可能です。

wikipedia.py
res = requests.get('https://ja.wikipedia.org/wiki/Python')

次にこのURLからHTMLを取ってくる次の呪文を唱えます。

wikipedia.py
soup = bs4.BeautifulSoup(res.text, "html.parser")

因みにhtml.parserとは、htmlのタグ情報から情報を解釈するプログラムです。

初めのうちは、htmlを扱いやすくしてくれるという解釈でOKです。

次に、wikipediaの目次の部分にカーソルを持ってきます。

イメージ.png

そこで右クリックをし、「検証」をクリックします。

すると、次のようなhtmlのコードが出てきます。

イメージ 2.jpeg

目次を囲っているdivタグのidを確認すると、tocとなっていますね。

イメージ 3.jpeg

なので、このdivタグ”toc”内の全ての要素を次のように引っ張ってきます。

wikipedia.py
 index = soup.select('#toc')

(この場合idなので「#」が付いていますが、classの場合は「.」を付けてください)

これでindexというリストに目次の要素が入れられました。
※なぜリストなの?

後は、for文を使ってindexの中身を表示させます。

wikipedia.py
for i in index:
    print(i.getText())

.getText()を付けることで、HTMLのタグを取り除くことができます。

##これまで書いたコード

wikipedia.py
import requests,bs4
 
url = 'https://ja.wikipedia.org/wiki/Python'
 
res = requests.get(url)
soup = bs4.BeautifulSoup(res.text, "html.parser")
 
index = soup.select('#toc')
 
for i in index:
    print(i.getText())

これを実行すると、

イメージ 4.jpeg

このように、目次を表示する事ができます。

※リストになって返される理由は、select()メソッドがすべての要素を返すメソッドだからです。
一つだけ要素を返したい場合はselect_one()メソッドを使います。

というわけで、今回はPythonでスクレイピングを行う方法を簡単に説明させていただきました。

最後まで読んでいただきありがとうございました!

11
21
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
11
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?