Categories: python

Pythonで始めるWebスクレイピング入門ガイド【実践コード付き】

インターネット上には、私たちの知りたい情報が数多く存在しています。
そんな情報を自動的に収集し、活用するために便利なのが「Webスクレイピング」です。

Pythonはシンプルで扱いやすい文法と、スクレイピングに最適なライブラリが豊富に揃っていることから、スクレイピング初心者に最もおすすめされる言語のひとつです。

この記事では、Pythonによるスクレイピングの基礎から実践的なコードまで、わかりやすく解説していきます。これからスクレイピングを学びたい方や、データ収集を自動化したい方にとって役立つ内容になっています。


Pythonでスクレイピングを行う準備

Pythonでスクレイピングを行うには、いくつかのライブラリをインストールする必要があります。代表的なのが以下の3つです。

  • requests:WebページにアクセスしてHTMLデータを取得するためのライブラリ
  • BeautifulSoup:取得したHTMLを解析して、必要な情報を抽出するためのライブラリ
  • pandas(必要に応じて):取得したデータを整形・保存するのに便利なライブラリ

インストールは以下のコマンドで行います:

pip install requests beautifulsoup4 pandas

この準備が整えば、基本的なスクレイピングを始めることができます。


実践:Pythonでニュースサイトをスクレイピングする

ここでは、ニュースサイトの見出しをスクレイピングする簡単な例を紹介します。たとえば「NHK NEWS WEB」のトップページから、ニュースの見出しを抽出する場合のコードです。

import requests
from bs4 import BeautifulSoup

# 対象のURL
url = 'https://www3.nhk.or.jp/news/'

# HTMLを取得
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# 見出しの抽出(クラス名などはサイトに応じて確認)
headlines = soup.find_all('span', class_='title')

# 出力
for headline in headlines:
print(headline.get_text(strip=True))

このように、特定のHTMLタグやクラスを指定することで、欲しい情報を効率よく取り出すことができます。


スクレイピング時の注意点とマナー

スクレイピングを行う際には、法律やサイトの利用規約、マナーを守る必要があります。以下の点には特に注意してください。

1. robots.txtの確認

対象のサイトにスクレイピングを許可しているかどうかを、https://対象サイト/robots.txt で確認できます。

2. アクセス頻度を制限する

サーバーに負荷をかけないよう、1秒以上の待機時間を入れるのが基本です。

import time

# 各アクセスの間に待機時間を設定
time.sleep(1)

3. 利用規約を読む

一部のサイトでは、スクレイピングが明示的に禁止されている場合があります。無断利用は法的リスクもあるため、事前に確認が必要です。


よくあるエラーとその対処法

スクレイピング中によく出るエラーと、その対処方法を紹介します。

・403 Forbidden

→ ユーザーエージェント(アクセス元の情報)が弾かれている可能性があります。ヘッダーに偽装情報を入れて対応します。

headers = {
'User-Agent': 'Mozilla/5.0'
}
response = requests.get(url, headers=headers)

・404 Not Found

→ URLのミスや、ページが削除されている可能性があります。URLを再確認しましょう。

・NoneTypeエラー(.textや.get_text())

→ 要素が見つからなかった場合に発生します。事前に if 要素: で存在を確認しましょう。


スクレイピングしたデータをCSVで保存する方法

スクレイピングで取得したデータを保存しておくことで、後から分析や再利用が可能になります。ここでは、pandasを使ってCSVファイルに保存する方法を紹介します。

import pandas as pd

# ダミーデータ
data = {
'見出し': ['ニュース1', 'ニュース2', 'ニュース3']
}

df = pd.DataFrame(data)
df.to_csv('news.csv', index=False, encoding='utf-8-sig')

これで「news.csv」というファイルが作成され、Excelなどで開いて中身を確認することができます。


JavaScriptで生成されるページへの対処:Seleniumの活用

通常のrequestsでは取得できないJavaScriptによって生成されるページもあります。その場合はSeleniumを使ってブラウザを自動操作する方法が効果的です。

pip install selenium

基本的なコード例:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

# ChromeDriverのパスを指定
service = Service(executable_path='chromedriver.exe')
driver = webdriver.Chrome(service=service)

# ページを開く
driver.get('https://example.com')

# 特定要素を取得
element = driver.find_element(By.CLASS_NAME, 'headline')
print(element.text)

driver.quit()

まとめ:Pythonスクレイピングは強力なツール

Pythonによるスクレイピングは、情報収集を効率化し、ビジネスや個人の学習にも活用できる非常に便利なスキルです。

本記事では、初心者向けに基本的なライブラリの使い方、実践コード、エラー対処法、そして応用としてのSelenium利用法まで紹介しました。

スクレイピングの世界は広く、サイト構造や目的によって多彩なアプローチが可能です。ぜひ自分の目的に合った方法を見つけ、さまざまなWebデータの活用にチャレンジしてみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。

Recent Posts