超有名!BeautifulSoupを使ってスクレイピングしてみよう!【サンプルコード有り】

はじめに

pythonでスクレイピングするためのモジュールは多数あるのですが、おそらく今回紹介するBeautifulSoupはスクレイピングのコードを書いているPythonユーザーの中で最も使われていると思われる、と言えるほどの超有名なモジュールです。カンタンな記法で狙った要素をカンタンに取り出せるのがとても魅力的です。

また、超有名であることで、いろいろなところに情報源が有り、わからないことも比較的簡単に調べることができます。まさに初心者にとっては最初に手を出すのにうってつけなモジュールとなっていますので、いろいろイジり倒してスクレイピングの基礎を身に着けましょう!

BeautifulSoupを使ってスクレイピングしてみる本記事の目的

前述の通り、BeautifulSoupはとても有名で、使用者の多いPythonのモジュールです。Webページから内容を取得する上ではとてもカンタンなコードで実行できます。また、要素へのアクセスも豊富なメソッドが用意されているので、これまで紹介した正規表現やXpathを必要としないのも魅力の一つです。

このBeautiful Soupを使ってまずはHTMLの取得から狙った内容を取得するところまでやってみましょう!例によってTitleタグを取得しますが、これまでの正規表現やXpathと違って、titelタグをそのまま出力するメソッドが用意されているので、コードはかなり短くすることができます。

その他にも多くの機能が実装されておりますので、興味を持たれたらぜひリファレンスなどをご覧になって中身をいじくり回して見ることをおすすめいたします!

BeautifulSoupを使ってスクレイピングの処理の流れ

それでは処理の流れを説明します!

BeautifulSoupをインポートする

まずはBeautifulSoupをインポートしましょう!Anaconda3ではデフォルトでBeautifulSoupのモジュールがインストールされているので、pipインストールなどの必要はありません。

 

HTMLを取得してパースする

たった3行で終わりです笑

 

タイトルを指定して、標準出力に出力する

soup.title.txtでタイトルの内容をテキストで取得します。これまでのように正規表現やXpathでの指定は必要ないのでとても便利です!

 

BeautifulSoupを使ってスクレイピングするソースコード

それではソースコードです!

from bs4 import BeautifulSoup
from urllib import request

response = request.urlopen('https://jidouka-labo.com/')
soup = BeautifulSoup(response)
response.close()

print(soup.title.text)

おわりに

今回はBeautifulSoupの基本的な使い方に関してご説明しました。短いコードでカンタンにスクレイピングできたことに驚いたのではないでしょうか?titleタグ以外にも多くの要素指定方法がありますので、狙った要素を取得したいときにとても便利だと思います。

これまでは、特定のURLのWebサイトにアクセスして要素を取得する方法を考えてきましたが、次回以降、複数のWebページにまたがって内容を取得する、いわゆるクローリングという方法をご紹介していきたいと思います。クローリングにもこれまで紹介した内容が大いに生かされるますのでお楽しみに!