BeautifulSoup4でHTMLにタグを挿入する【Python】

151, 2021-01-05

目次

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

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

スポンサーリンク

投稿者名です。64字以内で入力してください。

必要な場合はEメールアドレスを入力してください(全体に公開されます)。

投稿する内容です。

スポンサーリンク

スポンサーリンク