Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Python

【Python】BeautifulSoupを使ったWebスクレイピングのサンプルコードを解説

動画で解説を見る



開発環境

  • Python version: python 3.10.11
  • beautifulsoup4: 4.11.1

PythonのBeautiful Soupとは

Beautiful Soup(ビューティフル・スープ)とは、HTMLやXMLなどのマークアップ言語からデータを抽出するためのPythonのライブラリです。

Beautiful Soupは、パース(解析)されたHTMLやXMLのドキュメントをセレクタやフィルタなどの機能で特定の要素やデータを抽出することができるため、簡潔で効率的な方法でデータを抽出できます。

また、Beautiful Soupは、外部ライブラリのlxmlやhtml5libと組み合わせて使用されることが一般的で、これらのライブラリを組み合わせてWebスクレイピングやデータ収集などのタスクに広く使用されています。

公式ドキュメント:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#

PythonのBeautiful Soupの使い方

PythonのBeautiful Soupの使い方を解説していきます。

Beautiful Soupをインストール

Beautiful Soupをインストールするにはpipコマンドを使用します。

また、データの取得にはPythonではRequestsを利用することは一般的なため、インストールされていない方は下記のコマンドも実行してください。

これで準備完了です。

PythonのBeautiful Soupでスクレイピングする

次にPythonのBeautiful Soupでスクレイピングするサンプルコードを解説しています。

スクレイピングのサンプルコード

下記はBeautiful Soupを使用してYahoo!JAPANのトップページにリクエストを送り、TopicsからタイトルとURLの一覧を取得するサンプルコードです。

Yahoo JapanのトップページにGETリクエストを送る

Yahoo JapanのトップページにGETリクエストを送ります。

その結果として得られるHTMLを取得し、変数resに代入しています。

HTMLドキュメントを解析する

次にHTMLドキュメントを解析しています。

取得したHTMLをBeautiful SoupのBeautifulSoupオブジェクトにパースすることにより、HTMLドキュメントを解析して要素を抽出しやすくなります。

CSSセレクタで要素を抽出する

CSSセレクタで要素を抽出します。

Yahoo Japanトップページのトピックスの部分をBeautifulSoupのselectメソッドを使用して、指定されたCSSセレクタに一致する要素を抽出しています。

各トピックスの要素からタイトルとURLを取得する

最後に各トピックスの要素からタイトルとURLを取得します。

select_oneメソッドを使用して、CSSセレクタに一致する最初の要素を取得し、その後、text属性や属性値を取得しています。

ループ内のelement.select_one('h1').textはタイトル、element.select_one('a')['href']はURLを取得しています。

おわりに

今回はPythonでBeautifulSoupを使ったスクレイピングの方法について解説していきましたが、いかがだったでしょうか。

WebスクレイピングはSeleniumが有名ですが、HTMLやXMLのドキュメントを解析することが得意なBeautifulSoupと組み合わせることにより、非常に効率的にデータを収集することができます。

Webスクレイピングの需要は年々高まっているため、是非、使いこなしていきましょう。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Python