アイキャッチ画像

PythonのBeautifulSoup4でHTMLの要素の内容を削除する

PythonのBeautifulSoup4モジュールを使って、HTMLドキュメントの要素(タグ)の内容を削除します。

目次

  1. HTMLの要素の内容を削除する手順
  2. HTMLの子要素を削除する実施例

HTMLの要素の内容を削除する手順

clearメソッドを使って指定の要素の内容を削除します。

要素そのものを削除する場合は、 decomposeメソッドなど を使用します。

soup.clear()
変数 内容
soup 内容を削除したい要素。

clearで中身が消えるって、クリアですね。

HTMLの子要素を削除する実施例

こういうindex.htmlがあったとして、最初のH1要素の内容を消してみたいと思います。

<html>
    <head></head>
    <body>
        <h1 class="1st">最初の章</h1>
            <ul>
                <li id="foo">項目1</li>
                <li id="bar">項目2</li>
                <li id="bar">項目3</li>
            </ul>
        <h1 class="2nd">2つめの章</h1>
            <p>文章</p>
    </body>
</html>

class属性が1stのh1要素を検索すればよいわけですね。

>>> from bs4 import BeautifulSoup
>>> with open('index.html', mode='rt', encoding='utf-8') as f:
...     soup = BeautifulSoup(f.read(), 'html.parser')
...

>>> soup.find('h1', class_='1st').clear() # クリアの実行

>>> soup # クリア後のオブジェクトの表示
<html>
<head></head>
<body>
<h1 class="1st"></h1>
<ul>
<li id="foo">項目1</li>
<li id="bar">項目2</li>
<li id="bar">項目3</li>
</ul>
<h1 class="2nd">2つめの章</h1>
<p>文章</p>
</body>
</html>

最初のH1要素の内容が無くなりました。

続けて、UL要素の中身もクリアしてみましょう。

>>> soup.find('ul').clear()
>>> soup
<html>
<head></head>
<body>
<h1 class="1st"></h1>
<ul></ul>
<h1 class="2nd">2つめの章</h1>
<p>文章</p>
</body>
</html>

UL要素の子要素が全て消えました。

広告

PythonとXMLカテゴリの投稿