ユーニックス総合研究所

  • home
  • archives
  • bs4-insert-tag

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を簡単に編集することが可能になります。

🦝 < タグを挿入して元気リンリン