【Python スクレイピング入門】初心者でも実践できる基礎知識と始め方を解説

kento_morota 13分で読めます

Pythonスクレイピングとは?基礎知識と始め方

「競合の価格を毎日チェックするのに1時間かかっている」「求人情報を手作業でExcelにまとめるのが大変」――こうした悩みを、Pythonスクレイピングで解決できます。

スクレイピングとは、Web上の情報を自動的に収集する技術です。手作業で行っていた情報収集を自動化できるため、業務効率化に大きく貢献します。

この記事では、プログラミング初心者の方でも実践できるよう、Pythonスクレイピングの基礎知識から環境構築、実際のコードまで解説します。

スクレイピングの仕組みと特徴

スクレイピング(Scraping)とは、Webサイトから必要な情報を自動的に抽出する技術です。「scrape(削り取る)」という英語が語源で、Webページから欲しいデータだけを取り出すイメージです。

仕組みは以下の通りです:

  1. プログラムがWebページにアクセス
  2. HTMLデータを取得
  3. 必要な情報を抽出
  4. データを整形・保存

例えば、不動産サイトから「価格」「間取り」「駅からの距離」だけを抜き出してExcelにまとめる作業を自動化できます。

Pythonが最適な理由

Pythonがスクレイピングに適している理由は3つです。

豊富なライブラリ
requests(Webページ取得)、BeautifulSoup(HTML解析)、pandas(データ整形)など、必要なライブラリが揃っています。これらを組み合わせることで、複雑な処理も比較的簡単に実装できます。

初心者でも学びやすい文法
Pythonのコードは英語に近く読みやすいため、他の言語と比べて学習コストが低く抑えられます。

充実した情報とExcel連携
日本語の解説記事やQ&Aが豊富で、困ったときに解決策を見つけやすいのが特徴です。また、openpyxlpandasを使えば、取得データを簡単にExcel形式で保存でき、既存の業務フローに組み込みやすくなっています。

法律とマナーの遵守

スクレイピングを実践する前に、必ず押さえるべきルールがあります。

利用規約とrobots.txtの確認
多くのWebサイトは利用規約でスクレイピングを禁止している場合があります。また、https://example.com/robots.txtにアクセスすると、サイト運営者が設定したクローラーのルールを確認できます。Disallowで指定されたページへのアクセスは避けましょう。

著作権と個人情報への配慮
取得した情報には著作権が存在します。自社の分析目的での利用は問題ありませんが、転載や販売は著作権侵害になる可能性があります。また、個人情報を含むデータを収集する場合は、個人情報保護法に則った取り扱いが必要です。

サーバー負荷への配慮
短時間に大量のアクセスをするとサーバーに負荷がかかります。time.sleep()を使って適切な間隔を空けるなど、配慮が必要です。

業務効率化の具体的な活用例

スクレイピングは、中小企業の様々な場面で活用できます。

価格・商品情報の自動収集

EC事業や小売業での活用
競合5社の価格を毎朝自動で収集し、Excelに前日比較も含めて整理できます。従来は1日30分〜1時間かかっていた作業が、ほぼゼロになります(初回設定のみ)。価格改定のタイミングを逃さず、担当者が休んでも情報収集が途切れないため、属人化の解消にもつながります。

製造業での活用
原材料の市場価格を日次で収集し、仕入れタイミングの最適化に活用できます。

求人・不動産情報の集約

人材紹介業での活用
複数の求人サイトから「エリア」「職種」「給与」を抽出し、自社のデータベースに統合することで、顧客に最適な求人をスピーディに提案できます。

不動産業での活用
物件サイトから「価格」「間取り」「築年数」を取得し、相場分析や顧客への提案資料を自動作成できます。手作業では不可能だった大量データの比較分析が可能になります。

ニュース・SNS監視

リスク管理とトレンド把握
特定のキーワード(自社名、競合名、業界用語)を含むニュースを自動収集し、毎朝メールで通知することで、炎上リスクの早期発見や市場トレンドの把握に活用できます。

商品改善への活用
ECサイトのレビューを定期的に収集し、ネガティブな評価を早期に検知することで、商品改善やカスタマーサポートに活かせます。

環境構築の手順

プログラミング環境の構築は、手順通りに進めれば初心者でも問題ありません。

Pythonのインストール

Windowsの場合
1. Python公式サイトから最新版(Python 3.11以降推奨)をダウンロード
2. インストーラーを実行
3. 「Add Python to PATH」に必ずチェックを入れる
4. 「Install Now」をクリック

Macの場合
1. 公式サイトからmacOS用インストーラーをダウンロード
2. ダウンロードしたファイルを開いて指示に従う

インストール確認
コマンドプロンプト(Windows)またはターミナル(Mac)で以下を入力:

python --version

バージョン番号が表示されればインストール成功です。

エディタの選択

初心者にはVisual Studio Code(VSCode)をおすすめします。無料で軽量、拡張機能が豊富で、Python以外の用途にも使えるため汎用性が高いからです。

  1. VSCode公式サイトからダウンロード
  2. インストール後、拡張機能「Python」をインストール

これだけで基本的な開発環境が整います。

必要なライブラリのインストール

コマンドプロンプトまたはターミナルで以下を実行:

pip install requests beautifulsoup4 lxml pandas openpyxl

各ライブラリの役割:
- requests:Webページを取得
- beautifulsoup4:HTMLを解析
- lxml:BeautifulSoupの解析を高速化
- pandas:データの整形・分析
- openpyxl:Excel形式での保存

基本コードの実践

環境構築ができたら、実際にコードを書いて動かしてみましょう。

Webページの取得

まずは、Webページのデータを取得する基本的なコードから始めます。

import requests

url = 'https://example.com'
response = requests.get(url)

print(f'ステータスコード: {response.status_code}')
print(response.text[:500])

このコードをtest.pyとして保存し、python test.pyで実行します。ステータスコード200が表示されれば成功です。

HTMLの解析と情報抽出

取得したHTMLから必要な情報を抽出します。

import requests
from bs4 import BeautifulSoup

url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')

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

# すべての見出し(h2タグ)を取得
headings = soup.find_all('h2')
for heading in headings:
    print(heading.text)

要素の特定方法
ブラウザの開発者ツール(F12キー)を使います:
1. 取得したい情報の上で右クリック
2. 「検証」または「要素を調査」を選択
3. HTMLの構造とクラス名が確認できます

データの保存

収集したデータをExcelファイルに保存します。

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://example-news.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')

data = []
articles = soup.find_all('div', class_='article-item')

for article in articles:
    title = article.find('h3', class_='article-title')
    date = article.find('span', class_='article-date')

    if title and date:
        data.append({
            '日付': date.text,
            'タイトル': title.text
        })

df = pd.DataFrame(data)
df.to_excel('news_data.xlsx', index=False)
print('Excelファイルに保存しました')

実用的なテクニック

基本的なスクレイピングができるようになったら、実用的なテクニックを学びましょう。

複数ページの巡回

多くのサイトでは情報が複数ページに分かれています。

import requests
from bs4 import BeautifulSoup
import time

base_url = 'https://example.com/page='

for page in range(1, 6):
    url = f'{base_url}{page}'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')

    # データを取得(省略)

    print(f'{page}ページ目を取得しました')
    time.sleep(2)  # サーバー負荷軽減のため2秒待機

動的サイトへの対応

JavaScriptで動的に生成されるコンテンツには、Seleniumを使用します。

pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get('https://example.com')
time.sleep(3)

elements = driver.find_elements(By.CLASS_NAME, 'article-title')
for element in elements:
    print(element.text)

driver.quit()

ただし、Seleniumは動作が重いため、requestsで対応できる場合はrequestsを使うことをおすすめします。

データの整形

取得したデータには不要な空白や改行が含まれていることがよくあります。

import re

# 前後の空白を削除
text = '  タイトル  '
cleaned = text.strip()

# 数字だけを抽出
text = '価格:1,200円'
price = re.sub(r'[^0-9]', '', text)  # '1200'

定期実行の自動化

Windowsの場合:タスクスケジューラ
タスクスケジューラで実行タイミングを設定し、Pythonスクリプトのパスを指定します。

Macの場合:cron

crontab -e
# 毎日9時に実行
0 9 * * * /usr/bin/python3 /path/to/script.py

トラブル対処法

よくあるエラーと対処法

ModuleNotFoundError: No module named 'requests'
- 原因:ライブラリ未インストール
- 対処法:pip install requestsを実行

AttributeError: 'NoneType' object has no attribute 'text'
- 原因:指定した要素が見つからなかった
- 対処法:要素の存在確認を追加

title = soup.find('h1', class_='title')
if title:
    print(title.text)
else:
    print('要素が見つかりませんでした')

HTTPError: 403 Forbidden
- 原因:アクセスがブロックされた
- 対処法:User-Agentヘッダーを設定

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

スクレイピング禁止時の代替手段

スクレイピングが禁止されている場合は、以下の代替手段を検討しましょう。

  • 公式API:多くのサービスが公式APIを提供しています
  • RSSフィード:ニュースサイトなどで利用可能
  • データ提供サービス:有料ですが、合法的にデータを取得できます

まとめ

この記事では、Pythonスクレイピングの基礎から実践まで解説しました。

学んだポイント:
- スクレイピングの仕組みとPythonが適している理由
- 法律・マナーの遵守(利用規約、robots.txt、著作権)
- 環境構築の手順(Python、VSCode、ライブラリ)
- 基本コード(requests、BeautifulSoup、データ保存)
- 実用テクニック(複数ページ巡回、動的サイト対応、定期実行)

次のステップ:
1. まずは簡単なサイトで練習してみる
2. 自社の業務で活用できる場面を探す
3. 小さな自動化から始めて、徐々に拡大する

Pythonスクレイピングは、中小企業の業務効率化に大きく貢献します。手作業で行っていた情報収集を自動化し、本来の業務に集中できる環境を作りましょう。

「自社に合った仕組み作りをサポートしてほしい」という場合は、Harmonic Societyにご相談ください。AI活用と業務システム開発の専門家として、"ちょうどいい"デジタル化を支援します。

#Python#スクレイピング#入門
共有:

ちょっとした業務の悩みも、気軽にご相談ください。

まずは話だけ聞いてもらう