
BeautifulSoupとは何か
BeautifulSoupは、Pythonのライブラリの1つで、Webスクレイピングに特化したものです。Web上にあるHTMLやXMLのデータを解析し、必要な情報を取得することができます。
BeautifulSoupのインストール方法
BeautifulSoupを使用するには、まずPythonのバージョンを確認し、pipを使ってインストールします。
1 | $ pip install beautifulsoup4 |
BeautifulSoupを使ったHTMLの解析
BeautifulSoupを使うと、HTMLの解析が簡単に行えます。まずはHTMLデータを取得し、BeautifulSoupに渡します。
1 2 3 4 5 6 7 8 9 10 11 12 | 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メソッドを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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セレクタを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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関数を使ってファイルを開き、書き込みモードで保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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スクレイピングに挑戦してみましょう。