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スクレイピングやデータマイニングを行う際には必須のライブラリとなっています。