こんにちは。
せら⇒だいひょー🐯です。
僕のTwitterアカウント
(https://twitter.com/seradaihyo)
では、
未経験からエンジニアを目指す方に向けて日々発信しています。
今回はPythonでWikipediaのスクレイピングを行う方法を記事にしたいと思います。
それでは始めていきましょう。
Pythonでスクレイピングをする上で必ず使うサードパーティ製ライブラリが二つあります。
それが
・Requests
・BeautifulSoup
です。
それぞれ簡単に説明すると、
Requests
⇒URLを開くためのライブラリ
BeautifulSoup
⇒HTMLからデータを抽出する
といった感じです。
Requestsでページを開いて、BeautifulSoupでデータを取ってくるイメージです。
Pythonコードの先頭に、この二つのライブラリをインポートするためのコードを書いておきます。
import requests,bs4
#■WikipediaのPython記事をスクレイピング
今回は、wikipediaのPython記事をスクレイピングして目次を表示するアプリを作ります。
アプリと言っても記述するコードはたったの7行なので、安心してください。
まず、wikipediaでPythonの記事を検索します。
このURLをコピーして、以下のようにURLの変数に入れます。
url = 'https://ja.wikipedia.org/wiki/Python'
そしてそのURLのページを開く次の呪文を唱えます。
res = requests.get(url)
resは変数なので名前は自由です。
勿論1と2は次のように一行で書くことも可能です。
res = requests.get('https://ja.wikipedia.org/wiki/Python')
次にこのURLからHTMLを取ってくる次の呪文を唱えます。
soup = bs4.BeautifulSoup(res.text, "html.parser")
因みにhtml.parserとは、htmlのタグ情報から情報を解釈するプログラムです。
初めのうちは、htmlを扱いやすくしてくれるという解釈でOKです。
次に、wikipediaの目次の部分にカーソルを持ってきます。
そこで右クリックをし、「検証」をクリックします。
すると、次のようなhtmlのコードが出てきます。
目次を囲っているdivタグのidを確認すると、tocとなっていますね。
なので、このdivタグ”toc”内の全ての要素を次のように引っ張ってきます。
index = soup.select('#toc')
(この場合idなので「#」が付いていますが、classの場合は「.」を付けてください)
これでindexというリストに目次の要素が入れられました。
※なぜリストなの?
後は、for文を使ってindexの中身を表示させます。
for i in index:
print(i.getText())
.getText()を付けることで、HTMLのタグを取り除くことができます。
##これまで書いたコード
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())
これを実行すると、
このように、目次を表示する事ができます。
※リストになって返される理由は、select()メソッドがすべての要素を返すメソッドだからです。
一つだけ要素を返したい場合はselect_one()メソッドを使います。
というわけで、今回はPythonでスクレイピングを行う方法を簡単に説明させていただきました。
最後まで読んでいただきありがとうございました!