🦁

【Python】Webスクレイピングの始め方

2024/07/28に公開

1. はじめに

Webスクレイピングは、Webサイトから自動的にデータを抽出する技術です。Pythonは、その豊富なライブラリと簡潔な構文により、Webスクレイピングに適した言語の一つです。この記事では、Pythonを使用したWebスクレイピングの基本的な方法について解説します。

2. 必要なツール

Webスクレイピングを始めるには、以下のツールが必要です:

  1. Python (3.6以上を推奨)
  2. requests ライブラリ
  3. BeautifulSoup ライブラリ

3. 環境設定

まず、必要なライブラリをインストールします。以下のコマンドを実行してください:

pip install requests beautifulsoup4

4. 基本的なスクレイピングの手順

4.1 Webページの取得

import requests

url = "https://example.com"
response = requests.get(url)
html_content = response.text

4.2 HTMLの解析

from bs4 import BeautifulSoup

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

4.3 データの抽出

# 例: すべての<h1>タグを取得
h1_tags = soup.find_all('h1')

for h1 in h1_tags:
    print(h1.text)

5. 実践的な例:ニュースサイトのタイトル抽出

以下は、BBCニュースのトップページからニュースのタイトルを抽出する例です:

import requests
from bs4 import BeautifulSoup

url = "https://www.bbc.com/news"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

headlines = soup.find_all('h3', class_='gs-c-promo-heading__title')

for headline in headlines:
    print(headline.text.strip())

6. 注意点

  1. 利用規約の確認: スクレイピング対象のWebサイトの利用規約を必ず確認してください。
  2. アクセス頻度: 短時間に大量のリクエストを送らないよう注意しましょう。
  3. robots.txt: サイトのrobots.txtファイルを確認し、クローリングが許可されているかを確認してください。
  4. ユーザーエージェント: 適切なユーザーエージェントを設定しましょう。

7. 高度なテクニック

  1. セッション管理: requests.Session()を使用して、複数のリクエスト間でセッションを維持できます。
  2. 非同期処理: aiohttpasyncioを使用して、非同期でスクレイピングを行うことができます。
  3. ヘッドレスブラウザ: SeleniumPlaywrightを使用して、JavaScript実行後のコンテンツをスクレイピングできます。

8. まとめ

Pythonを使用したWebスクレイピングの基本的な方法について解説しました。スクレイピングは強力なツールですが、責任を持って使用することが重要です。Webサイトの所有者の権利を尊重し、適切な方法でデータを収集しましょう。

スクレイピングスキルを向上させるには、さまざまなWebサイトでの実践と、より高度なテクニックの学習が有効です。また、APIが利用可能な場合は、APIを優先的に使用することをおすすめします。

Discussion