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

2020-02-24

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

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

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

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

当記事では、

Python3でBeatifulSoup4を使う方法

について解説します。

Python3でBeatifulSoup4を使う7つの手順

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

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

 command$ pip install beautifulsoup4

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

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

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

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

 commandimport requests
from bs4 import BeautifulSoup

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

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

HTMLを取得する

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

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

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

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

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

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

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

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

スクレイピングする

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

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

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

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

find例:titleタグを取得

 commandtitle_bs = bs.find("title")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

結果を出力する

 commandprint(result)

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

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

おまけ:サンプルコード

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

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

 command#必要なライブラリをインポート
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の勉強におすすめの入門本ランキングまとめ10選【初心者〜中級者】

【GAS】Google Apps ScriptでWebスクレイピングする方法

  • この記事を書いた人

mono

26歳♂️関東在住のサイドFIREを目指すブロガー/座右の銘は「知識は誰にも奪われない」/ゆるく稼いで楽しく暮らすライフハック情報をお届けします/アイコンは黎(クロイ)さん。

スキルを磨く データ分析

Python Webスクレイピング

© 2021 monoblog