Pythonのbeautifulsoupでスクレイピングをしてみよう

この記事ではPythonのBeautiful Soupの使い方について解説をしていきます。Beautiful Soupはスクレイピングをするためのライブラリです。

スクレイピングとは何かを知りたい。
Pythonでスクレイピングをしたい。

といった方に向けてこの記事では、

  • スクレイピングとは
  • スクレイピングの流れ
  • Beautiful Soupでスクレイピングをする方法

について解説していきます。初心者の方もぜひご覧ください!

スクレイピングとは

まずはスクレイピングとは何かについて知っておきましょう。スクレイピングについて分かっている方は読み飛ばしてもらっても構いません!

スクレイピングは、WebサイトのHTMLからデータを取得して、たくさんの情報から本当に必要な情報だけを取得することを言います。また、似たものにAPIというものがあります。

APIはWebサイトから提供されている、内部的なデータの受け渡しですが、スクレイピングはWebサイトから何も提供されていない、外部的なデータの受け渡しになります。

なので、Webサイトによってはスクレイピングが禁止されていて、データにアクセスするためには提供されているAPIを使わなければならない場合もあります。

今回はBeautiful SoupというPythonのパッケージを使って、簡単なスクレイピングをしてみましょう。また今回はHTMLCSSの知識が必要になります。不安な方は、ぜひこちらの記事を参考に学習してみてください。

スクレイピングの流れ

一口にスクレイピングといっても、スクレイピングには様々な準備や工程が必要になります。まずは、スクレイピング対象の記事にアクセスをする必要があります。HTMLをブラウザでダウンロードしてもスクレイピングは出来ますが、スマートでは無いですし、リアルタイムに変更されるHTMLに対しては対応できません。

次に、クローリングです。これは必ずしも必要な工程では無いのですが、様々なリンクを巡回して、対象のページのデータを取得していく作業です。

イメージが付きにくいかもしれませんが、GoogleやYahooなどの検索エンジンは、とても有名なクローラの一つです。これらの準備を経て、スクレイピングが実行されます。スクレイピングでは、HTMLの構文を解析(パース)して、欲しい情報だけを取得することが出来ます。

Beautiful Soupとは

ではここで今回使っていくBeautiful Soupについて見ていきましょう。Beautiful SoupはHTMLデータをの構文を解析するためのパッケージです。HTMLを解析するために、HTMLタグやCSSのセレクタで抽出する部分を指定することが出来ます。

基本的にはブラウザの検証ツールを使って、抽出したい部分がどのタグやセレクタに対応しているのかを調べ、そのタグやセレクタをBeautiful Soupで指定します。Beautiful Soupはスクレイピングのために作られたパッケージなので、より効率的にスクレイピングを行うことが出来ます!

Beautiful Soupでスクレイピングをする方法

それでは早速スクレイピングをしてみましょう!

Beautiful Soupをインストールする

まずはBeautiful Soupをインストールしましょう。pipのコマンドでインストールすることが出来ます。

Beautiful Soupではバージョン4をインストールしましょう。ちなみにpipというPythonのパッケージ管理ツールについてはこちらの記事をご覧ください。

【Python入門】pipとは?使い方をわかりやすく解説!
更新日 : 2019年7月3日

対象のページにアクセスをする

インストールが出来たら、次はrequestsを使って、スクレイピングをしたい記事にアクセスしましょう。requestsもBeautiful Soupと同じようにpipを使ってインストールすることが出来ます。

このrequestsはurllib2というインターネットにアクセスすることが出来るモジュールを、より使いやすくしたパッケージになります。

こちらのコードをご覧ください。

今回は侍エンジニア塾のブログトップページにアクセスをしてみましょう。url変数を自分の好きなサイトのアドレスに変更すると、アクセス先を変更することが出来ます。

requests.get(url)では、実際にHTMLデータを取得しています。response.apparent_encodingを実行してエンコーディングを変更しておくと、文字化けをすることが少なく済みます。

ちなみに、このコードを短時間のうちに何度も実行すると、サーバーに大きな負荷がかかってしまいます。なので、サーバーに負担をかけないような工夫(アクセスに時間をあけるなど)をしましょう。

スクレイピングをする

先程までの作業でスクレイピングをしたい記事にアクセスすることが出来ました。それではBeautiful Soupでスクレイピングをしてみましょう。

こちらのコードをご覧ください。

実行結果

このコードではh3のタグを選んで全て表示させています。無事にスクレイピング出来ましたね。先程、requests.get(url)で取得したデータをテキストとしてBeautiful Soupに渡しただけで、HTMLを解析してくれました。

ちなみに、第二引数の「html.parser」はHTMLでパースをするということを設定しています。bs.select(“h3”)でh3のタグを指定して、for文を回すことでそれぞれのタイトルを抽出することが出来ましたね。

まとめ

この記事ではスクレイピングとは何かから、PythonのBeautiful Soupを使う方法について解説をしてきました。スクレイピングとは何かについて、分かって頂けたでしょうか?

スクレイピングでは、サイトにアクセスして、構文を解析して、という流れが必要になってきます。サンプルコードをよく読んで、どのような流れでスクレイピングをしているのか、しっかりと見につけておきましょう!

エラーばかりでプログラミング学習が進まない、と悩んでいませんか?

プログラミング学習を始めたけれど、エラーの原因がよく分からなかったり、調べてみたけれど解決されず「どうやって進めればいいんだろう」と放置してそのまま挫折しかけていませんか?

一度進め方が分からなくなるとやる気も失せてしまいますよね。

そんなあなたにオススメしたいのが、「侍エンジニア塾」の無料体験レッスンです。独学で1000時間以上の学習が必要と言われているところを300時間に短縮する「プログラミング独学法」をお伝えします。

下記の無料体験レッスン予約カレンダーよりお申し込みいただけます。あなたのご相談を心よりお待ちしております。

LINEで送る
Pocket

書いた人

ryo

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説