BeautifulSoupでHTML要素の改行や空白を削除する方法を解説!

こんにちは!今回は、BeautifulSoupを使ってHTML要素の改行や空白を削除する方法について解説していきます。

BeautifulSoupとは

BeautifulSoupは、PythonでHTMLやXMLの解析を行うためのライブラリです。HTMLやXMLの構造を解析し、要素を抽出したり、属性やテキストを取得したりすることができます。

BeautifulSoupでHTML要素を抽出する方法

まず、HTML要素を抽出する方法について説明します。以下の例では、Pythonのrequestsモジュールを使って、WebページのHTMLを取得し、BeautifulSoupを使ってtitle要素を抽出しています。

import requests
from bs4 import BeautifulSoup
url = "http://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
title = soup.title
print(title)

このプログラムを実行すると、以下のようにtitle要素が取得されます。

<title>Example Domain</title>

BeautifulSoupでHTML要素の改行を削除する方法

次に、BeautifulSoupを使ってHTML要素の改行を削除する方法について説明します。

以下の例では、先ほどのプログラムに加えて、strip()メソッドを使ってtitle要素内の改行を削除しています。

import requests
from bs4 import BeautifulSoup
url = "http://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
title = soup.title.string.strip()
print(title)

このプログラムを実行すると、以下のようにtitle要素内の改行が削除された文字列が取得されます。

Example Domain

BeautifulSoupでHTML要素の空白を削除する方法

次に、BeautifulSoupを使ってHTML要素の空白を削除する方法について説明します。

以下の例では、先ほどのプログラムに加えて、replace()メソッドを使ってtitle要素内の空白を削除しています。

import requests
from bs4 import BeautifulSoup
url = "http://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
title = soup.title.string.strip().replace(" ", "")
print(title)

このプログラムを実行すると、以下のようにtitle要素内の空白が削除された文字列が取得されます。

ExampleDomain

BeautifulSoupで特定のHTML要素を削除する方法

次に、BeautifulSoupを使って特定のHTML要素を削除する方法について説明します。

以下の例では、Pythonのdel文を使って、Webページ内のすべてのa要素を削除しています。

import requests
from bs4 import BeautifulSoup
url = "http://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
for a in soup.find_all("a"):
    a.decompose()
print(soup)

このプログラムを実行すると、Webページ内のすべてのa要素が削除されたHTMLが取得されます。

BeautifulSoupを活用した実用的な例

最後に、BeautifulSoupを活用した実用的な例を紹介します。

以下の例では、Pythonのcsvモジュールを使って、Webページからテーブルデータを抽出し、CSVファイルとして保存しています。

import requests
from bs4 import BeautifulSoup
import csv
url = "http://example.com/table.html"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
table = soup.find("table")
rows = table.find_all("tr")
with open("data.csv", "w", encoding="utf-8") as f:
    writer = csv.writer(f)
    for row in rows:
        csv_row = []
        for cell in row.find_all(["td", "th"]):
            csv_row.append(cell.get_text())
        writer.writerow(csv_row)
print("CSVファイルの保存が完了しました。")

このプログラムを実行すると、Webページから抽出したテーブルデータがCSVファイルとして保存されます。

まとめ

今回は、BeautifulSoupを使ってHTML要素の改行や空白を削除する方法について解説しました。BeautifulSoupは、PythonでHTMLやXMLの解析を行うための強力なライブラリであり、Webスクレイピングやデータ処理において非常に便利です。ぜひ、活用してみてください。