Python3のBeatifulSoup4を使ってWebスクレイピングする方法【7ステップ】

Python3のBeatifulSoup4を使ってWebスクレイピングする方法【7ステップ】
mono
mono
こんにちは、monoです。

PythonでWebスクレイピングと言えば、BeatifulSoup(ライブラリ)が便利ですよね。

BeatifulSoupは有名なライブラリなので、基本的な使い方を知っている人は増えてきています。

しかし、プログラム1行1行の意味や、スクレイピングやトリミングの細かなテクニックは知らないという人も多いのではないでしょうか。

当記事では、

Python3でBeatifulSoup4を使う方法

について解説します。

目次

Python3でBeatifulSoup4を使う7つの手順

Python3におけるBeatifulSoup4の使い方について、7つの手順に分けて解説します。

pipでBeatifulSoup4をインストールする

$ pip install beautifulsoup4

まずはpipコマンドでBeatifulSoup4ライブラリをインストールします。

Pythonを実行する環境(ターミナル、コマンドライン、Jupyter、Colaboratryなど)であれば、どこで実行してもOKです。

Jupyter、Colaboratryで実行する場合は、頭に「!」を付けて実行してください。

必要なライブラリをimportする

import requests
from bs4 import BeautifulSoup

いよいよPythonのプログラムを書いていきます(.pyの中のコード)。

まずは必要なライブラリをインポートしないといけないので、「requests」と「bs4からBeautifulSoup」をインポートします。

HTMLを取得する

res = requests.get('https://monoblog.jp/')

スクレイピングするURLにリクエストを送って、そのページのHTMLを取得します。

この時点ではHTMLデータをごっそり持っているだけなので、まだスクレイピングは完了していません。

BeautifulSoupオブジェクトを生成する

bs = BeautifulSoup(res.text, 'html.parser')

受け取ったHTMLをテキストデータに変換した上で、BeautifulSoupオブジェクトを生成します。

BeautifulSoupオブジェクトを生成することで、BeautifulSoupライブラリにあるスクレイピングする際に便利なメソッドを使えるようになります。

スクレイピングに便利なメソッドについてはこの後ご紹介しますね。

スクレイピングする

  • find(タグ,条件)メソッド・・・該当するCSSセレクタを1つ取得
  • find_all(タグ,条件)メソッド・・・該当するCSSセレクタをすべて取得

BeautifulSoupオブジェクトを生成したら、生成したオブジェクトから必要なデータだけ抽出(スクレイピング)します。

BeautifulSoupライブラリでスクレイピングに便利なメソッドは、主に上記の2つです。

使い方は以下の例を参考にしてみてください。

find例:titleタグを取得

title_bs = bs.find("title")

find_all例:classがnameのaタグをすべて取得

name_a_bs = bs.find_all("a", class_="name")

いらないデータをトリミングする

  • get(要素)・・・タグ内の要素の値を取得
  • text()・・・画面に表示されるテキストを取得
  • split(区切り文字)・・・区切り文字でテキストを分割
  • replace(検索文字,置換文字)・・・テキスト内にある検索を文字を置換

BeautifulSoupオブジェクト上でのスクレイピングが完了したら、次にいらないデータをトリミングします。

トリミングに便利なメソッドは、主に上記の4つです。

使い方は以下の動作例を参考にしてください。

get例:aタグ内のhref値を取得

url = bs.find("a").get("href")

text例:divタグ内のテキストを取得

url = bs.find("div").text()

split例:/ごとの最初の要素を取得

url = bs.find("div").text().split("/")

replace例:spanの閉じタグを削除

url = bs.find("div").text().replace("</span>")

※splitとreplaceは、一度テキストデータに変換してから実行する必要があります。

結果を出力する

print(result)

スクレイピングで得た結果を出力して、正しくデータを抽出できているか確認します。

正しく要件通りの形式でデータが抽出できていれば、スクレイピングは完了です。

おまけ:サンプルコード

最後に、おまけですぐに動かせるサンプルコードを載せておきます。

当ブログのタイトルを取得するプログラムです。

#必要なライブラリをインポート
import requests
from bs4 import BeautifulSoup

#HTMLを取得
res = requests.get('http://quotes.toscrape.com/')

#BeautifulSoupオブジェクトを生成
bs = BeautifulSoup(res.text, 'html.parser')

#タイトルを取得
title = bs.find("title").text()

#結果を出力
print(title)

まとめ

今回は「Python3でBeatifulSoup4を使う方法」について解説しました。

PythonでのWebスクレイピングはそれほど難しくありません。特にBeatifulSoupライブラリには便利なメソッドが充実しているので、スクレイピングが初めての人でも扱いやすくなっています。

この機会にあなたもPythonのWebスクレイピングを始めてみてはいかがでしょうか。

では、また。

あわせて読みたい
Pythonのおすすめ入門本ランキング45選【初心者〜上級者】 「近年需要が高まっているPythonの勉強を始めたいけど、参考書が多すぎてどれを選べばいいか分からない」と悩んでいませんか? Pythonの参考書と一口に言っても、「Pyth...

あわせて読みたい
【GAS】Google Apps ScriptでWebスクレイピングする方法 Webスクレイピング(クローラー、クローリング)と言えば、Pythonを使ったスクレイピングが人気ですよね。 ただ、もう少し手軽に利用したい場合、GAS(Google Apps Scri...

この記事を書いた人

28歳♂Webアナリスト/おすすめ本と生活改善グッズ紹介サイトmonoblog.jp他4サイト運営15万PVほど/楽天経済圏/リベ大生/サウナ/筋トレ/お仕事の依頼はこちら

目次