BeautifulSoup入門:Webスクレイピングの基本をマスターしよう

BeautifulSoupとは何か

BeautifulSoupは、Pythonのライブラリの1つで、Webスクレイピングに特化したものです。Web上にあるHTMLやXMLのデータを解析し、必要な情報を取得することができます。

BeautifulSoupのインストール方法

BeautifulSoupを使用するには、まずPythonのバージョンを確認し、pipを使ってインストールします。

$ pip install beautifulsoup4

BeautifulSoupを使ったHTMLの解析

BeautifulSoupを使うと、HTMLの解析が簡単に行えます。まずはHTMLデータを取得し、BeautifulSoupに渡します。

from bs4 import BeautifulSoup
html = """
<html>
  <head>
    <title>Webページのタイトル</title>
  </head>
  <body>
    <p>Webページの本文</p>
  </body>
</html>"""

soup = BeautifulSoup(html, 'html.parser')

上記の例では、HTMLの解析には’html.parser’を使用しています。他にも、’lxml’や’html5lib’といったパーサーを使用することもできます。

BeautifulSoupで特定のタグを抽出する方法

BeautifulSoupを使って、特定のタグを抽出するには、find_allメソッドを使用します。

from bs4 import BeautifulSoup
html = """
<html>
  <head>
    <title>Webページのタイトル</title>
  </head>
  <body>
    <p>Webページの本文</p>
  </body>
</html>"""

soup = BeautifulSoup(html, 'html.parser')
p_tags = soup.find_all('p')
for p in p_tags:
    print(p)

上記の例では、HTML内の全てのpタグを取得しています。find_allメソッドはリスト型で返されるため、for文を使って1つずつ取り出す必要があります。

BeautifulSoupで特定のクラスやIDを持つ要素を抽出する方法

BeautifulSoupを使って、特定のクラスやIDを持つ要素を抽出するには、CSSセレクタを使用します。

from bs4 import BeautifulSoup
html = """
<html>
  <head>
    <title>Webページのタイトル</title>
  </head>
  <body>
    <p class="main">Webページの本文</p>
    <p class="sub">Webページのサブタイトル</p>
    <p id="footer">Webページのフッター</p>
  </body>
</html>"""

soup = BeautifulSoup(html, 'html.parser')
main_p = soup.select('p.main')
sub_p = soup.select('p.sub')
footer_p = soup.select('p#footer')
print(main_p)
print(sub_p)
print(footer_p)

上記の例では、classが’main’のpタグ、classが’sub’のpタグ、idが’footer’のpタグをそれぞれ取得しています。

BeautifulSoupでスクレイピングしたデータを保存する方法

BeautifulSoupでスクレイピングしたデータを保存するには、ファイルに書き出すか、データベースに保存する方法があります。

ファイルに書き出す場合は、open関数を使ってファイルを開き、書き込みモードで保存します。

from bs4 import BeautifulSoup
html = """
<html>
  <head>
    <title>Webページのタイトル</title>
  </head>
  <body>
    <p class="main">Webページの本文</p>
    <p class="sub">Webページのサブタイトル</p>
    <p id="footer">Webページのフッター</p>
  </body>
</html>"""

soup = BeautifulSoup(html, 'html.parser')
with open('output.txt', 'w') as f:
    for p in soup.find_all('p'):
        f.write(p.text + '\n')

上記の例では、pタグのテキストを1行ずつファイルに書き出しています。

まとめ

BeautifulSoupを使えば、Webスクレイピングが簡単に行えます。HTMLの解析や特定のタグやクラス、IDを持つ要素の抽出、そしてデータの保存ができるようになりました。これらの基本をマスターして、Webスクレイピングに挑戦してみましょう。