Python

PythonでWebスクレイピング-Beautiful Soupの使い方解説

こんにちはトナコードです。

今日は、PythonのWebスクレイピングライブラリであるBeautifulSoupの使い方について解説します。Webスクレイピングができるようになると、Web上のデータ収集がとても簡単にできるようになりますので、ぜひ最後まで見てみてください。

Webスクレイピングとは?

まず、Webスクレイピングとは何かについて説明します。Webスクレイピングとは、プログラムを使ってWebサイトの情報を抽出することを指します。具体的な例を挙げると、あるテーマパークのサイトに今月のイベントの一覧が表示されているとします。この情報を自動的に取得したいときに、Webスクレイピングを使います。

Web APIとの違い

Webスクレイピングとは別に、Web APIを使ってデータを取得する方法もあります。Web APIが公開されているサイトでは、APIを使うのが望ましいです。しかし、すべてのサイトがAPIを公開しているわけではないので、APIがない場合はWebスクレイピングを利用しましょう。

注意点

Webスクレイピングを禁止しているサイトもあるので、データを取得したいサイトの利用規約を確認してください。例えば、YouTubeは利用規約でWebスクレイピングを禁止しています。

Webスクレイピングの準備

それでは、BeautifulSoupを使ったWebスクレイピングの方法を説明します。まずは、スクレイピングしたいWebページのHTMLを取得します。Pythonのrequestsライブラリを使って、HTMLを取得します。requestsは標準ライブラリではないので、事前にインストールが必要です。

pythonコード
import requests
response = requests.get('https://example.com')
html = response.text

BeautifulSoupでHTMLを解析する

次に、BeautifulSoupを使ってHTMLを解析します。BeautifulSoupも標準ライブラリではないので、事前にインストールが必要です。

pythonコードをコピーする
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

タグの取得

特定のタグで囲まれたテキストを取得する方法を紹介します。例えば、HTMLのタイトルタグのテキストを取得する場合は次のようにします。

pythonコードをコピーする

title = soup.title.string
print(title)

複数の同じタグを取得したい場合は、find_allメソッドを使います。

paragraphs = soup.find_all('p')
for p in paragraphs:
    print(p.string)

属性の取得

タグの属性を取得する方法も説明します。属性とは、タグの中に書かれている情報で、IDやクラスが該当します。

pythonコードをコピーする
link = soup.find('a')
print(link['href'])

実際の例

具体的な例として、レシピサイトからレシピ名を取得してみましょう。対象のページを開き、デベロッパーツールを使ってHTMLの構造を確認します。ここでは、オレンジページネットのレシピサイトを例にします。

pythonコードをコピーするurl = 'https://www.orangepage.net/recipes/search?keyword=carrot'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# レシピ名を取得
recipes = soup.find_all('h2', class_='title')
for recipe in recipes:
    print(recipe.string)

このように、BeautifulSoupを使うとHTMLの解析とデータの抽出が簡単にできます。

まとめ

以上が、BeautifulSoupを使ったWebスクレイピングの基本的な使い方です。Webスクレイピングを活用して、自分のアプリやデータ分析に役立ててみてください。また、Webスクレイピングを行う際には、必ず利用規約を確認し、マナーを守って行うようにしましょう。

次回は、Web APIを使ったデータ取得方法についても解説しますので、お楽しみに。

ABOUT ME
tona-code
24/7月末の退職を機に、pythonを使った副業にチャレンジ。 初月から5万以上の収入を得たノウハウを発信中。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です