※このページではアフィリエイト広告を利用しています

【Python応用】BeautifulSoupを用いた基本的なスクレイピング方法

Python

Pythonでスクレイピングを行い、解析する方法の一つとして「BeautifulSoup」があります。ここでは「BeautifulSoup」の使用方法について解説をしています。

この記事の対象

  • スクレイピングに挑戦したい方
  • BeautifulSoupの使用方法を知りたい方
  • Webスクレイピング方法を知りたい方
スポンサーリンク
スポンサーリンク

BeautifulSoupとは

スクレイピングをする上で任意の情報を抽出するライブラリが「BeautifulSoup」です。HTML、XMLから任意の情報を抽出するための解析を行います。ただし、データのダウンロードを行うわけではないのがポイントです。ダウンロードを行う場合は「urllib」を使用します。

BeautifulSoupのダウンロード

「BeautifulSoup」は標準ライブラリではないので、ライブラリをダウンロードする必要があります。PyPIからpipでダウンロードします。

#BeautifulSoupのダウンロード
$ pip3 install beautifulsoup4

BeautifulSoupの基本的な使用方法

要素名・属性(id)での抽出

要素の抽出方法にはいくつか種類があります。以下では「要素名」「属性」で抽出する方法について解析しています。

プログラムの流れ

プログラムの大まかな流れです。

  1. BeautifulSoup(ライブラリ)のインポート
  2. パーサーの指定(html.parser)
  3. 抽出(h1,h2,p)

プログラム

#1---ライブラリのimport
from bs4 import BeautifulSoup
#2---解析内容
analytics = """
<html><body>
 <h1>【Python応用】BeautifulSoupを用いた基本的なスクレイピング方法</h1>
 <h2>BeautifulSoupとは</h2>
 <p>スクレイピングをする上で任意の情報を抽出するライブラリが「BeautifulSoup」です。</p>
</html></body>
"""
#3---パーサーの指定
soup = BeautifulSoup(analytics,'html.parser')
#4---抽出
h1 = soup.html.body.h1
h2 = soup.html.body.h2
p = soup.html.body.p
#4---抽出した文字の出力
print("h1 : ",h1.string)
print("h2 : ",h2.string)
print("p : ",p.string)

上記のプログラムでは、ウェブから情報をスクレイピングしていません。HTMLをプログラム内で記述して、その内容を解析するものとなっています。

2の部分で解析したいHTMLを指定しています。内容としては「h1」「h2」「p」です。3の部分はBeautifulSoup(引数1,引数2)メソッドです。引数1にHTMLを指定、引数2にパーサーを指定しています。4の部分は任意の部分を抽出しています。「h1」「h2」「p」を抽出しています。「soup.html.body.h1」はh1がどこにあるのか指定しています。5の部分は文字を取得しています。

結果
#h1 :  【Python応用】BeautifulSoupを用いた基本的なスクレイピング方法
#h2 :  BeautifulSoupとは
#p :  スクレイピングをする上で任意の情報を抽出するライブラリが「BeautifulSoup」です。

>>>「BeautifulSoup」におけるidを指定して要素抽出する方法

CSSセレクタでの抽出

抽出方法には、CSSセレクタを指定して抽出する方法もあります。以下ではCSSセレクタを用いた抽出方法を紹介しています。

プログラムの流れ

プログラムの大まかな流れです。

  1. URLの指定
  2. パーサーの指定(html.parser)
  3. selectを用いて抽出(h2)

プログラム

from bs4 import BeautifulSoup
import urllib.request as urreq

#1---URL指定
url = "https://www.hobby-happymylife.com/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0/python_scraping_beautifulsoup_id/"
ans = urreq.urlopen(url)
#2---パーサー指定
soup = BeautifulSoup(ans,'html.parser')
#3---h2の抽出
all_h2 = soup.select('h2')
for i in range(3):#3つ抽出
    cell = all_h2[i].string
    print(cell)

上記のプログラムは、Web(本サイト)から情報を取得して解析するものになります。

1の部分では、URLを指定しています。次に2の部分ではパーサーを指定しています。3の部分では「select」を用いて「h2」の抽出をしています。

結果
id属性とは
find()メソッドを用いた要素探索
find_all()メソッドを用いた要素探索

>>>「BeautifulSoup」におけるCSSセレクタを操作する方法

BeautifulSoupの操作

項目内容
BeautifulSoupにおけるidでの要素探索BeautifulSoupではHTML内のid属性をfind()メソッドを用いて解析することが可能です。ここでは、find()メソッドを用いた解析方法について解説しています。
BeautifulSoupとurlopenによるスクレイピングBeautifulSoupは解析するもので、単体ではスクレイピングが成立しません。そこで、ウェブサイトから情報を抽出するにはurlopenを用いてサイトにアクセスする必要があります。ここでは、urlopenとBeautifulSoupを用いたスクレイピングについて解説しています。
BeautifulSoupにおけるCSSセレクタの操作BeautifulSoupを用いた解析において、CSSセレクタを用いた探索方法があります。「soup.select_one()」などを用いることで要素を抽出できます。ここでは、「soup.select_one()」を用いて解説しています。
タイトルとURLをコピーしました