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

この記事ではPythonBeautiful Soupの使い方について解説をしていきます!

Beautiful Soupはスクレイピングをするためのライブラリです。

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

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

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

について解説していきます。

初心者の方もぜひご覧ください!

スクレイピングとは

まずはスクレイピングとは何かについて知っておきましょう。

スクレイピングについて分かっている方は読み飛ばしてもらっても構いません!

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

また、似たものにAPIというものがあります。

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

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

今回はBeautiful SoupというPythonのパッケージを使って、簡単なスクレイピングをしてみましょう。

また今回はHTMLCSSの知識が必要になります。

不安な方は、ぜひこちらの記事を参考に学習してみてください。

スクレイピングの流れ

一口にスクレイピングといっても、スクレイピングには様々な準備や工程が必要になります。

まずは、スクレイピング対象の記事にアクセスをする必要があります。

HTMLをブラウザでダウンロードしてもスクレイピングは出来ますが、スマートでは無いですし、リアルタイムに変更されるHTMLに対しては対応できません。

次に、クローリングです。

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

イメージが付きにくいかもしれませんが、GoogleYahooなどの検索エンジンは、とても有名なクローラの一つです。

これらの準備を経て、スクレイピングが実行されます。

スクレイピングでは、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年4月22日

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

インストールが出来たら、次は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を使う方法について解説をしてきました。

スクレイピングとは何かについて、分かって頂けたでしょうか?

スクレイピングでは、サイトにアクセスして、構文を解析して、という流れが必要になってきます。

サンプルコードをよく読んで、どのような流れでスクレイピングをしているのか、しっかりと見につけておきましょう!

Pythonカリキュラム無料公開中!

この記事はPython入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Python学習に必要な情報を一つにまとめていますので効率よくPythonを学ぶことが出来ます。この機会に是非活用していただければと思います。

Python入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】
更新日 : 2019年4月4日

Pythonを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Pythonを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、通常のスクールでは難しい、AI(人工知能)や機械学習、IoTについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Pythonならではの学習方法や、現役Pythonエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta_bannar-ai2

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:4/20(土),4/27(土)
  • 時間:14:00〜17:35終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

ryo