こんにちはトナコードです。
今日は、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を使ったデータ取得方法についても解説しますので、お楽しみに。