BeautifulSoup4のタグオブジェクトの使い方
みなさまおはこんばんにちは、せなです
今回はBeautifulSoup4のタグオブジェクトの使い方について説明したいと思います
BeautifulSoup4の基本的なスクレイピングの方法について知りたいという方は以下の記事を参考にしてください
リンク:BeautifulSoup4の基本的な使い方
始めに
BeautifulSoup4は基本的に以下の4つのオブジェクトを操作して処理を行います
- Tag
- NavigableString
- BeautifulSoup
- Comment
その中から今回はタグオブジェクトの使い方を説明していきます
タグオブジェクトとは
タグオブジェクトは取得したHTMLやXMLのタグに対応しています
Beautiful Soupのオブジェクトの中で最も重要で基本的なオブジェクトです
soup = BeautifulSoup('<div class="main_content"></div>', 'html.parser')
tag = soup.div
print(type(tag))
----結果----
<class 'bs4.element.Tag'>
タグオブジェクトの使い方
タグ名の変更
タグオブジェクトは.name
を使うことでタグ名を変更することができます
soup = BeautifulSoup('<div class="main_content">せなブログ</div>', 'html.parser')
tag = soup.div
print(tag)
tag.name = 'p'
print(tag)
----結果----
<div class="main_content">せなブログ</div>
<p class="main_content">せなブログ</p>
タグ属性の変更
タグオブジェクトのタグ属性は辞書と同じ構造をしていますので
tag['class’]または.attrs
を使うことでタグ属性へ簡単にアクセスできます
soup = BeautifulSoup('<div class="main_content">せなブログ</div>', 'html.parser')
tag = soup.div
print(tag['class'])
print(tag.attrs)
----結果----
['main_content']
{'class': ['main_content']}
タグ属性は辞書と同じ構造なのでdict
を使う時と同じようにタグの追加・変更・削除ができます
soup = BeautifulSoup('<div class="main_content">せなブログ</div>', 'html.parser')
tag = soup.div
# 追加
tag['id'] = 'sub'
print(tag)
# 変更
tag['class'] = 'sub_content'
print(tag)
# 削除
del tag['class']
del tag['id']
print(tag)
----結果----
<div class="main_content" id="sub">せなブログ</div>
<div class="sub_content" id="sub">せなブログ</div>
<div>せなブログ</div>
複数の値を持っている場合
classなどの一部の属性には複数の値を持つことができるものがあります
その場合にはBeautiful Soupはそれらの値をlist
として表示します
soup = BeautifulSoup('<div class="main_content"></div>', 'html.parser')
soup2 = BeautifulSoup('<div class="main_content sub_content"></div>', 'html.parser')
print(soup.div['class'])
print(soup2.div['class'])
----結果----
['main_content']
['main_content', 'sub_content']
また、HTML標準の定義から外れた値の場合には一つのまとまりとして認識されます
(idを複数指定したりとか)
soup = BeautifulSoup('<div id="main category"></div>', 'html.parser')
print(soup.div['id'])
----結果----
main category
ディスカッション
コメント一覧
まだ、コメントがありません