BeautifulSoupでHTMLから文字列を取り出し、変換・削除を実行

BeautifulSoupとは

BeautifulSoupは、Pythonで開発されたHTML/XMLの解析ライブラリです。HTMLやXMLの構造を解析し、データを抽出したり、変換したり、削除したりできます。

BeautifulSoupでHTMLから文字列を取り出す方法

BeautifulSoupでHTMLから文字列を取り出すには、以下のようにコードを記述します。

from bs4 import BeautifulSoup
html = '<html><body><p>Hello, World!</p></body></html>'
soup = BeautifulSoup(html, 'html.parser')
text = soup.get_text()
print(text)

このコードでは、HTMLの文字列をBeautifulSoupのget_text()メソッドを使って取り出しています。

実行結果は以下のようになります。

Hello, World!

BeautifulSoupで文字列を削除する方法

BeautifulSoupでHTMLから文字列を削除するには、以下のようにコードを記述します。

from bs4 import BeautifulSoup
html = '<html><body><p>Hello, World!</p><p>This is a paragraph.</p></body></html>'
soup = BeautifulSoup(html, 'html.parser')
for tag in soup.find_all('p'):
    tag.decompose()
text = soup.get_text()
print(text)

このコードでは、HTMLの文字列から<p>タグを取り除いています。

BeautifulSoupで文字列を変換する方法

BeautifulSoupでHTMLから文字列を変換するには、以下のようにコードを記述します。

from bs4 import BeautifulSoup
html = '<html><body><p>Hello, World!</p></body></html>'
soup = BeautifulSoup(html, 'html.parser')
for tag in soup.find_all('p'):
    tag.string = tag.string.upper()
text = soup.get_text()
print(text)

このコードでは、HTMLの文字列から<p>タグ内の文字列を大文字に変換しています。

実行結果は以下のようになります。

HELLO, WORLD!

BeautifulSoupを活用した具体的な処理例

以下は、BeautifulSoupを使って外部サイトからニュース記事を取得し、タイトルと本文を抽出するコード例です。

from bs4 import BeautifulSoup
import requests
url = 'http://example.com/news/article'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
title = soup.find('h1').get_text()
text = soup.find('div', {'class': 'article-body'}).get_text()
print('Title: ' + title)
print('Text: ' + text)

このコードでは、外部サイトからニュース記事を取得し、タイトルと本文を抽出しています。

BeautifulSoupを使うメリット

  • HTML/XMLの構造を理解せずにデータを抽出できる
  • 簡単に文字列の変換や削除ができる
  • Pythonで書かれたライブラリなので、Pythonとの親和性が高い

まとめ

BeautifulSoupを使えば、HTML/XMLからデータを抽出したり、変換したり、削除したりすることができます。Pythonとの親和性が高いため、Pythonを使ってWebスクレイピングやデータマイニングを行う際には必須のライブラリとなっています。