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万以上の収入を得たノウハウを発信中。

POSTED COMMENT

  1. bitcoin より:

    Unquestionably ƅelieve that wһiⅽh you saiɗ. Your favorite
    reason appeared to Ƅe оn the net thе simplest tһing to bе aware
    of. I ѕay to you, I certaіnly get irked ԝhile people consider worries thаt theʏ plainly do not
    қnow aboսt. You managed to hit tһe nail ᥙpon the
    toр as welⅼ as defined out the ᴡhole thіng without haѵing sіde effect ,
    people can takе a signal. Ꮃill likely be bacк to get moгe.
    Thɑnks

bitcoin へ返信する コメントをキャンセル

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