レッスン1 / 3問目

『BeautifulSoupの基本的な使い方』

このレッスンではBeautifulSoupの基本的な使い方について見ていきましょう。

BeautifulSoupとは

BeautifulSoupはスクレイピングにおいて解析を行うためのライブラリです。

これまでのレッスンではrequestsモジュールを用いてwebページのHTMLを取得しましたが、BeautifulSoupはそのHTMLを解析する役割を担います。

例えば以下のようなHTMLがあった場合に、「aタグだけを抜き出す」や「aタグのhref属性を抜き出す」といったことができます。

<body> <div class="container"> <h1>スクレイピングを学習しよう。</h1> <p>スクレイピングは素晴らしい技術です。</p> <p><a href="#">スクレイピングを学びたい方はこちら</a></p> </div>

BeautifulSoupの基本的な使い方

ではBeautifulSoupの使い方を見ていきましょう。

まずはインポートです。

  1. from bs4 import BeautifulSoup    # インポート

次にBeautifulSoupのオブジェクトを生成します。BeautifulSoupの第一引数にweb上から取得したHTMLを指定し、第二引数には"html.parser"というものを指定します。

soup = BeautifulSoup(取得したHTML, "html.parser")

第二引数の"html.parser"はHTMLをパース(HTMLの構造を解析)する役割を担います。このようなHTMLを解析するプログラムをHTMLパーサーと呼び、今回指定している"html.parser"はいくつか種類があるHTMLパーサーの中の一つです。

では実際にrequestsモジュールで取得したwebページをBeautifulSoupで解析します。下記webページのaタグを抽出します。

サンプルページhttps://manage.leagence-prog.com/sample1/

  1. import requests
  2. from bs4 import BeautifulSoup
  3. # webページを取得
  4. r = requests.get("https://manage.leagence-prog.com/sample1/")
  5. #BeautifulSoupのオブジェクトを生成
  6. soup = BeautifulSoup(r.text, "html.parser")
  7. # aタグを抽出
  8. print(soup.a)
  9. print(soup.find("a"))    # 「soup.a」と同じ
<a href="#">スクレイピングを学びたい方はこちら</a>    # aタグが抽出される <a href="#">スクレイピングを学びたい方はこちら</a>

上記のように生成したsoupオブジェクトに対して、抽出したいタグをドット区切りで記述することにより、指定したタグを取り出すことができます。また、「soup.find("a")」と記述しても同じようにaタグを取り出すことができます。

基本的な流れは以下のとおりです。

  1. requests.get()でwebページを取得
  2. BeautifulSoupのオブジェクトを生成する
  3. 作成したオブジェクトから値を抽出する

では、レッスンは以上となります。

演習課題にチャレンジしましょう。

Lesson1

requestsとBeautifulSoupをインポートしてください。


# 本レッスンではレッスンに必要のないコードや別のURlに対するrequestsは実行できない仕様になっています。
また、URLは変数を使用せず、直接requests.get()の引数に書き込んでください。

Lesson2

requestsを用いて下記URLからwebページを取得してください。

https://manage.leagence-prog.com/sample1/

Lesson3

取得したwebページからBeautifulSoupでオブジェクトを生成してください。

Lesson4

作成したオブジェクトからh1タグを出力してください。


Last updated:2020/1/25

<h1>スクレイピングを学習しよう。</h1>
  1. # 1. requestsとBeautifulSoupをインポートしてください
  2. import requests
  3. from bs4 import BeautifulSoup
  4. # 2. requestsを用いてwebページを取得してください
  5. r = requests.get("https://manage.leagence-prog.com/sample1/")
  6. # 3. BeautifulSoupでオブジェクトを生成してください
  7. soup = BeautifulSoup(r.text, "html.parser")
  8. # 4. 作成したオブジェクトからh1タグを出力してください
  9. print(soup.h1)
main.py
設定
g
n
i
d
a
o
L