1. はじめに|Webスクレイピングってなに?なぜ使うの?
こんにちは!Pythonを使った自動化に興味があるみなさん、今回は「Webスクレイピング」というちょっとワクワクする技術を紹介します!
「Webスクレイピング」って聞くと、ちょっと難しそうに感じるかもしれません。でも、実はとってもシンプルな考え方なんです。
一言でいうと、Webサイトに書かれている情報を、プログラムで自動的に取り出す技術のこと。
たとえばこんなことができます👇
- 天気予報サイトから今日の天気を自動でチェック!
- ネットショップから商品の価格を集めて一覧にする!
- ニュースサイトから最新の記事タイトルをまとめて取得!
これを全部、手作業じゃなくてPythonにやってもらえるのが魅力なんです。
■ なんで使うの?
ネットには便利な情報がたくさんありますが、毎回自分で見に行ってコピーするのは大変ですよね。
Webスクレイピングを使えば、その面倒な作業を自動化できます。たとえば:
- データ分析をしたい人が、情報を集めるために使う
- 毎日同じ作業を繰り返す必要がある仕事を効率化できる
- 自分だけの「情報まとめツール」が作れちゃう!
しかも、Pythonの「requests」と「BeautifulSoup」というライブラリを使えば、ほんの数行のコードで実現できるんです。難しい知識がなくても大丈夫!
このあとから、実際にWebページを読み取って情報を取り出す方法を、やさしく解説していきますね😊
それでは、さっそくWebスクレイピングの世界に踏み出してみましょう!
2. Webスクレイピングで使う2つの便利なライブラリ
PythonでWebスクレイピングをするには、「requests(リクエスツ)」と「BeautifulSoup(ビューティフルスープ)」という2つのライブラリがとっても便利なんです。
ここでは、それぞれの役割と使い方をわかりやすく紹介しますね!
2-1. requestsとは?Webページを取得する方法
まずは、Webページの内容を「持ってくる」ための道具がrequestsです。
たとえば、ニュースサイトのURLをrequestsで指定すると、そのページの中身(HTMLというコードの形)をまるごと取得できます。
✅ 使い方の例
import requests
url = "https://example.com"
response = requests.get(url)
print(response.text)
上のコードでは、指定したURLからページの情報をゲットして、それを画面に表示しています。
この.textの中に、WebページのHTMLがそのまま入っているんです!
💡 ポイント
requests.get()でWebページにアクセスresponse.status_codeでうまくアクセスできたかを確認(200なら成功!)response.textにHTMLの中身が入っている
2-2. BeautifulSoupとは?HTMLを解析して情報を取り出す
次に出てくるのが「BeautifulSoup」。
これは、取得したHTMLから必要な部分だけを取り出すための道具です。
HTMLって、人間が読むにはごちゃごちゃしていてわかりづらいですよね?
でもBeautifulSoupを使えば、「タイトルだけほしい」「リンクだけほしい」など、ピンポイントでデータを取り出せるんです。
✅ 使い方の例
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
title = soup.title.string
print(title)
このコードでは、ページのタイトルだけを取り出しています。とっても簡単ですね!
💡 よく使う操作
soup.find("h1"):最初のh1タグを探すsoup.find_all("a"):すべてのリンク(aタグ)をリストで取得.text:タグの中の文字を取り出す["href"]:リンク先のURLを取り出す

このように、requestsでWebページをゲットして、BeautifulSoupで必要な情報を取り出す。この2つを組み合わせれば、立派なWebスクレイピングができちゃうんです!
次は、実際にサンプルコードを動かして「どんなふうに情報が取れるか」を体験してみましょう!
3. 実践!Pythonでスクレイピングしてみよう
さぁ、いよいよここからは実際にPythonでWebスクレイピングをやってみましょう!
最初はシンプルなサンプルコードで、「Webページにアクセスして、タイトルを取り出す」ところまでやってみます。
3-1. スクレイピングの基本コード例
まずは、必要なライブラリをインストールしましょう。まだ入れてない方は、以下のコマンドをターミナルで実行してください。
pip install requests
pip install beautifulsoup4
これで準備OK!
では、さっそく以下のコードをPythonファイル(たとえば scrape_sample.py)に書いて実行してみましょう👇
import requests
from bs4 import BeautifulSoup
# スクレイピングしたいURL
url = "https://example.com"
# WebページのHTMLを取得
response = requests.get(url)
# BeautifulSoupで解析
soup = BeautifulSoup(response.text, "html.parser")
# タイトルを取得して表示
print("ページタイトル:", soup.title.string)
🔍 解説
requests.get(url):指定したURLにアクセスしてHTMLを取得BeautifulSoup(..., "html.parser"):HTMLをきれいに分解して扱いやすくするsoup.title.string:HTMLの中にある<title>タグの中身だけを取り出す
✅ 実行結果の例
ページタイトル: Example Domain
こんなふうに、たった数行のコードでWebページから情報を引っ張ってくることができるんです!
3-2. タグの取得・クラス指定・属性の扱い
「ページタイトル」だけじゃなくて、特定の要素を狙って取ることもできますよ!
✅ 例:リンク(<a>タグ)を全部取得する
links = soup.find_all("a")
for link in links:
print(link.text, "→", link["href"])
このコードでは:
<a>タグ(リンク)をすべて取り出すlink.textでリンクの表示名を取得link["href"]でリンク先のURLを取得
✅ 例:特定のclassを持つ要素を取得する
HTMLではよく「class属性」でデザインや区別をつけています。これも簡単に狙えます。
headline = soup.find("h2", class_="main-headline")
print(headline.text)
このようにして、ピンポイントで必要なデータを抜き出せるんです!
✅ ちょっと便利なヒント
- クラス名に「-」や「_」があるときは正確に書くこと!
- タグが見つからないときは
Noneになるので.textを呼ぶとエラーになります → 事前にifでチェックしよう!

次は、スクレイピングをするときに気をつけたいマナーやルールを解説します。
知らないとトラブルの原因になることもあるので、しっかり学んでいきましょう!
4. スクレイピングの注意点とマナー
Webスクレイピングはとても便利な技術ですが、やり方を間違えると相手のWebサイトに迷惑をかけてしまうこともあります。
場合によっては、法律にふれてしまったり、アクセスをブロックされたりすることも…。
だからこそ、マナーを守って正しく使うことがとっても大切なんです!
ここでは、スクレイピングをするときに気をつけたいルールやマナーをやさしく紹介します。
4-1. まずは「robots.txt」を確認しよう
多くのWebサイトには、**robots.txt(ロボッツ・テキスト)**というファイルがあります。
これは、「このページはスクレイピングOKですよ」または「ここはやめてね」といったルールを書いたものです。
たとえば、こんな感じのURLで見られます👇
https://example.com/robots.txt
中を見て、スクレイピングしていいかを確認しましょう。
もしDisallow: /と書かれていたら、そのサイト全体が禁止という意味になります。
4-2. アクセスはゆっくり!間隔をあけてアクセスしよう
短い時間に何回もスクレイピングをすると、相手のサーバーに負担がかかってしまいます。
人間がクリックするペースよりも速いアクセスは、「攻撃」とみなされてしまうことも😨
✅ 対策としては…
import time
# アクセスの間に1秒休憩
time.sleep(1)
このようにtime.sleep()を使って、1〜3秒ほどの休憩を入れるのがマナーです。
4-3. 利用規約を読んでおこう
Webサイトの中には、「自動的な取得を禁止します」と利用規約で明記しているところもあります。
「公開されてるからOK」と思わずに、利用規約(Terms of Service)を読んで確認するクセをつけましょう。
4-4. User-Agentを設定しよう
サイトによっては、requestsを使ってアクセスすると「これはロボットだ!」と判断してアクセスを拒否することがあります。
そんなときは、**User-Agent(ユーザーエージェント)**という設定を使うと通ることがあります。
headers = {
"User-Agent": "Mozilla/5.0"
}
response = requests.get(url, headers=headers)
これで「普通のブラウザから来たよ〜」と伝えることができるんですね。
✅ まとめ:安全・安心にスクレイピングを楽しもう!
スクレイピングはとってもパワフルな技術。でも、そのぶん**「ルールを守って使う」ことがとても大切**です。
robots.txtをチェックする- アクセス頻度は控えめに
- 利用規約をちゃんと読む
- ヘッダー情報を設定する(User-Agent)
これらを意識して、安全にWebの情報を活用していきましょう!
5. よくあるエラーとその対処法
Webスクレイピングをしていると、時々うまく動かないことがあります。
「なんでエラーになるの?」「コードは合ってるのに…」と戸惑うこともあるかもしれません。
でも大丈夫!
ここでは、初心者がよく出会うエラーとその対処法をやさしく解説していきます。
うまくいかないときのチェックポイントとして、ぜひ参考にしてください!
5-1. requests.exceptions.ConnectionError が出た!
❓ どんなエラー?
→ Webサイトにアクセスしようとしたけど、接続できなかったというエラーです。
🛠 よくある原因と対策
- URLが間違っている → スペルミスがないか確認!
- インターネットに接続されていない → Wi-Fiやネット回線を確認!
- アクセスがブロックされている →
headersを設定してみよう!
headers = {
"User-Agent": "Mozilla/5.0"
}
requests.get(url, headers=headers)
5-2. AttributeError: 'NoneType' object has no attribute 'text'
❓ どんなエラー?
→ .find()などで探したタグが見つからなかったのに、.textしようとしてエラーになっています。
🛠 よくある原因と対策
- 指定したタグやクラスが存在しない(変更されてるかも!)
- HTMLの構造を確認しよう(ブラウザで「検証」してみて)
✅ 対策コード例
title_tag = soup.find("h1")
if title_tag:
print(title_tag.text)
else:
print("タイトルが見つかりませんでした。")
5-3. 403 Forbidden が返ってくる
❓ どんなエラー?
→ サイトが「このアクセスは許可しません」とブロックしています。
🛠 よくある原因と対策
requestsはロボット扱いされやすい → User-Agentを設定しよう!
headers = {
"User-Agent": "Mozilla/5.0"
}
response = requests.get(url, headers=headers)
5-4. UnicodeEncodeError や文字化けする
❓ どんなエラー?
→ 日本語などの文字コードが原因でうまく表示されないときに起きます。
🛠 対策
- ファイルに保存するときは
encoding="utf-8"を指定! - BeautifulSoupの読み込み時に
response.encoding = response.apparent_encodingを追加してみるのも◎
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "html.parser")

エラーってこわいものに見えるけど、実はヒントのかたまりです。
一つひとつのエラーメッセージを読んでいけば、「何を直せばいいか」が見えてきます。
慣れてくると、「あ、これはあの対処法だな」とすぐに分かるようになりますよ 😊
6. まとめ|スクレイピングの第一歩を踏み出そう
ここまでお読みいただきありがとうございます!
今回は、Pythonを使ってWebページの情報を自動で取り出す「Webスクレイピング」について、基本から実践までをやさしく解説してきました。
🧠 本記事のふりかえり
✅ Webスクレイピングって?
→ Webサイトにアクセスして、欲しい情報を自動で取得する技術のこと。
✅ 使うライブラリは?
→ requestsでWebページを取得、BeautifulSoupでHTMLを解析!
✅ 実際にやってみた!
→ soup.title.stringでタイトルを取り出したり、find_all("a")でリンクを一覧にしたりできましたね!
✅ 注意点は?
→ robots.txtや利用規約をチェックし、アクセス間隔に気をつけてマナーを守ろう!
✅ エラー対策もばっちり!
→ よくあるエラーとその対処法も紹介しました。落ち着いて読み解けば大丈夫!
🚀 次のステップは?
「スクレイピング楽しいかも!」と思えたら、次のようなステップに進んでみましょう👇
- スクレイピングで集めたデータをCSVファイルに保存してみる
- ニュースサイトや天気サイトなど、自分の興味があるサイトを対象に練習
- さらに一歩進んで、Googleスプレッドシートに自動で書き込みするのもおすすめ!
👉 参考記事:PythonでWebスクレイピングしてスプレッドシートに自動書き込みする方法

スクレイピングは、情報収集や自動化の第一歩にぴったりの技術です。
慣れてくると、**「自分だけの情報収集ツール」や「業務の効率化ツール」**が作れるようになります。
Pythonと一緒に、あなたのやりたいことを少しずつ形にしていきましょう!
よくある質問(Q&A)
- QWebスクレイピングって違法じゃないの?
- A
基本的には違法ではありませんが、注意が必要です。
Webページに公開されている情報であっても、そのサイトの利用規約やrobots.txtでスクレイピングを禁止している場合があります。
マナーとルールを守って、相手に迷惑をかけないようにしましょう。
- QJavaScriptで表示されるデータは取得できないの?
- A
requestsでは取得できません。
JavaScriptで後から読み込まれるデータは、HTMLには最初から含まれていないため、通常のスクレイピングでは見えないのです。そういうときは、Selenium(セレニウム)やPlaywrightなどのツールを使うことで、ブラウザを自動操作しながらデータを取得することができます。
- QPython初心者でもできますか?
- A
もちろんできます!
今回紹介したコードは10行前後の短いコードで構成されていますし、わからない単語も1つずつ覚えていけば大丈夫です。
まずはこの記事のサンプルコードを真似してみるだけでも、ぐっと理解が深まりますよ







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。