BeautifulSoup4でHTMLにタグを挿入する【Python】
- 作成日: 2021-01-05
- 更新日: 2023-12-26
- カテゴリ: BeautifulSoup4
BeautifulSoup4でタグを挿入する
Pythonの外部ライブラリにBeautifulSoup4(ビューティフル・スープ・フォー)があります。
BeautifulSoup4はHTML/XMLを解析するパーサーです。
Pythonによるスクレイピングなどで一緒に使われることが多く、非常に人気のあるパーサーです。
内部パーサーを指定することで柔軟にパース方法を変更することが出来るのも特徴です。
今回はこのBeautifulSoup4を使ってHTMLにタグを挿入する方法を解説します。
タグの挿入方法について具体的には↓を見ていきます。
- new_tag()でタグを作成
- append()でタグを追加
- insert()でタグを挿入
これらのメソッドを使うことで既存のHTMLを柔軟に編集することが可能になります。
また削除系のメソッドと合わせることでHTMLを自在に編集することが出来るようになると思います。
削除系のメソッドについては↓をご覧ください。
new_tag()でタグを作成
タグを挿入したいわけですが、タグは新しく作成できた方が何かと便利です。
BeautifulSoup4にはタグを新規に作成するためのメソッドもあります。
その名もnew_tag()
メソッドです。
このメソッドを使うことで新しくタグを作成することが出来ます。
new_tag()の構造
new_tag()
はbs4.element.Tag
のメソッドです。
↓のような構造になっています。
new_tag(tag_name, **kwargs)
new_tag()
は1つ以上の引数を取り、1つの返り値を返します。
tag_name(第1引数)
tag_name
は作成するタグの名前です。
p
とかdiv
とかa
などを文字列で指定します。
**kwargs(第2引数)
タグの属性値です。
たとえばhref='http://example.com'
などと指定した場合は、タグの属性href
に値が設定されます。
返り値
返り値はbs4.element.Tag
です。
new_tag()でタグを作成する
new_tag()
によるタグの作成は↓のようにします。
from bs4 import BeautifulSoup
html = '<div></div>'
soup = BeautifulSoup(html, 'html.parser')
# aタグを新規作成する
tag = soup.new_tag('a', href='http://example.com/')
tag.string = 'クリックしてね' # タグのテキストを設定
print(type(tag)) # タイプを出力
print(tag.get('href')) # hrefの値を出力
↑のコードを実行すると↓の出力になります。
<class 'bs4.element.Tag'>
http://example.com/
↑のコードでは<a>
タグを作成しています。
new_tag()
の返り値のtype()
の出力と、属性href
を参照して出力しています。
append()でタグを追加
タグの末尾にタグを追加するにはappend()
を使います。
append()
はbs4.element.Tag
のメソッドです。
append()の構造
append()
は↓のような構造になっています。
append(tag)
append()
は1つの引数を取ります。返り値はNone
です。
tag(第1引数)
第1引数のtag
にはbs4.element.Tag
を指定します。
append()でタグを追加する
append()
でタグを追加するには↓のようにします。
from bs4 import BeautifulSoup
html = '<div><span>これは1つ目</span></div>'
soup = BeautifulSoup(html, 'html.parser')
# aタグを新規作成する
tag = soup.new_tag('a', href='http://example.com/')
tag.string = 'クリックしてね' # タグのテキストを設定
soup.div.append(tag) # divタグの末尾にタグを追加する
print(soup)
↑のコードを実行した出力は↓になります。
<div><span>これは1つ目</span><a href="http://example.com/">クリックしてね</a></div>
↑のコードでは<div>
タグの末尾にnew_tag()
で作成した<a>
タグを追加しています。
insert()でタグを挿入
insert()
で指定の場所にタグを挿入することが出来ます。
insert()
はbs4.element.Tag
のメソッドです。
insert()の構造
insert()
は↓のような構造になっています。
insert(index, content)
insert()
は第1引数に添え字を取り、第2引数に挿入するコンテンツを取ります。
返り値はNone
です。
index(第1引数)
コンテンツの挿入場所を示す整数です。
content(第2引数)
挿入するコンテンツです。
この値は文字列、またはbs4.element.Tag
になります。
insert()でタグを挿入する
insert()
でタグを挿入するには↓のようにします。
from bs4 import BeautifulSoup
html = '<div><span>これは2つ目</span></div>'
soup = BeautifulSoup(html, 'html.parser')
# aタグを新規作成
tag = soup.new_tag('a', href='http://example.com/')
tag.string = 'クリックしてね' # タグのテキストを設定
soup.div.insert(0, tag) # 0番目の位置にタグを挿入
print(soup)
↑のコードを実行すると↓の出力になります。
<div><a href="http://example.com/">クリックしてね</a><span>これは2つ目</span></div>
↑のコードでは<div>
タグの0
番目に<a>
タグを挿入しています。
おわりに
今回はBeautifulSoup4の挿入系のメソッドを紹介しました。
これらのメソッドを使うことでHTMLを簡単に編集することが可能になります。
🦝 < タグを挿入して元気リンリン