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

【Python応用】BeautifulSoupで複数要素をid属性で探索する方法

Python

BeautifulSoupではfind()メソッドを用いて任意のid属性の要素を探索できます。ここではfind()メソッドを用いた要素探索について解説しています。

この記事の対象

  • 任意の要素を抽出する方法を知りたい方
  • find()メソッドの使用方法を知りたい方
  • find_all()メソッドの使用方法を知りたい方
スポンサーリンク
スポンサーリンク

id属性とは

id属性とは、HTMLの要素(タグ)の中で設定することができる属性(attribute)の一つで、要素をページ中で識別する識別子になります。

HTMLにおいて、idセレクタを指定する場合はid属性を使用し、クラスセレクタを指定する場合はclass属性を使用します。

項目特徴
class属性HTML内で、同じclass名を何度も利用できる
id属性HTML内で、一度しか利用できない

似た言葉にDOM要素という言葉があります。DOMについてはこちらを参照して下さい。

それでは本題の探索する方法ですが、大きく2つあります。一つはfind()系、もう一つはselect()系になります。特徴としてfind()系は「要素名」「属性」を引数に指定できます。select()系は「CSSセレクタ」で探索します。

ここでは、find()系を中心に探索方法をまとめています。

find()メソッドを用いた要素探索

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

このプログラムでは、解析内容のHTMLを予め記述しておき、「soup.find(id = “要素”)」で抽出したい要素を指定しています。その下で抽出した要素を出力するプログラムとなっています。

結果

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

下記で紹介しているのは、find()メソッドを用いない解析方法です。

find_all()メソッドを用いた要素探索

複数の要素を取得する方法は「find_all()メソッド」を用いることで可能です。

from bs4 import BeautifulSoup
#1---解析内容
analytics = """
<html><body>
 <div id="menu">
  <ul>
   <li>Home</li>
   <li>プログラミング</li>
   <li>その他</li>
 </ul>
 </div>
</html></body>
"""

#2---パーサー指定
soup = BeautifulSoup(analytics,'html.parser')

#3---抽出
li_ana = soup.find_all("li")
for li in li_ana:
 out_word = li.string
 print(out_word)

「soup.find_all(“li”)」で全てのli要素を探索しています。for構文でli要素を出力しています。

結果

Home
プログラミング
その他

CSSセレクタでの抽出方法

CSSセレクタでの抽出方法としては「select」「select_one」があります。

項目内容
soup.select1つの要素を取り出すメソッド
soup.select_one複数の要素を取り出し、リスト型で返すメソッド

詳しい使用方法は以下をご参照下さい。

>>>BeautifulSoupにおけるCSSセレクタの操作

タイトルとURLをコピーしました