Webスクレイピングとは?どんなことができるか

Webスクレイピングとは、Webページから自動的にデータを収集する技術です。Pythonのライブラリを使えば、手作業で1時間かかるデータ収集を数秒で完了できます。

活用例: - ニュースサイトの記事タイトルを収集する - 商品価格を比較サイトから定期収集する - 就職・転職求人情報を一括取得する


使用するライブラリ

ライブラリ 用途
requests WebページのHTMLを取得する
BeautifulSoup4 HTMLを解析してデータを抽出する
Selenium JavaScriptで動くページの操作
Playwright より新しいブラウザ自動化ツール

静的なHTMLページにはrequests + BeautifulSoup、JavaScriptが必要なページにはSelenium/Playwrightを使います。


インストール

pip install requests beautifulsoup4

基本的なスクレイピング

import requests
from bs4 import BeautifulSoup

# HTMLを取得
url = "https://example.com"
response = requests.get(url)
response.encoding = 'utf-8'

# BeautifulSoupで解析
soup = BeautifulSoup(response.text, "html.parser")

# タイトルを取得
title = soup.find("title").text
print(f"タイトル: {title}")

# 全てのリンクを取得
links = soup.find_all("a")
for link in links:
    print(link.get("href"), link.text)

CSSセレクターを使った抽出

# class="article-title" の全要素を取得
titles = soup.select(".article-title")
for t in titles:
    print(t.text.strip())

# id="main-content" 内のh2要素
headings = soup.select("#main-content h2")
for h in headings:
    print(h.text)

User-Agentの設定

一部のサイトはBotからのアクセスをブロックします。User-Agentを設定することでブラウザに見せかけられます。

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get(url, headers=headers)

注意事項(必読)

スクレイピングを行う際は必ず以下を守りましょう。

  1. 利用規約を確認する:多くのサイトではスクレイピングを禁止しています
  2. robots.txtを確認するサイトURL/robots.txtでクロール禁止ページを確認
  3. サーバーに負荷をかけない:連続リクエスト時はtime.sleep(1〜3)で間隔を設ける
  4. 取得したデータの二次利用に注意:著作権・個人情報に配慮する

まとめ

BeautifulSoupを使ったスクレイピングは、数十行のコードで強力なデータ収集ツールを作れます。利用規約とrobots.txtを必ず確認した上で、節度のある使い方を心がけましょう。