<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>requests  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<atom:link href="https://python.cbagames.jp/tag/requests/feed/" rel="self" type="application/rss+xml" />
	<link>https://python.cbagames.jp</link>
	<description>Pythonで、できるをふやそう。</description>
	<lastBuildDate>Sun, 01 Feb 2026 08:43:25 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://python.cbagames.jp/wp-content/uploads/2025/06/cropped-497d491d54402de785c9e043bfa0620a-32x32.png</url>
	<title>requests  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<link>https://python.cbagames.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Pythonで為替レートを自動取得してExcelに保存する方法【初心者向け】</title>
		<link>https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/</link>
					<comments>https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Wed, 18 Jun 2025 03:32:14 +0000</pubDate>
				<category><![CDATA[自動化スクリプト]]></category>
		<category><![CDATA[API連携]]></category>
		<category><![CDATA[Excel操作]]></category>
		<category><![CDATA[openpyxl]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[requests]]></category>
		<category><![CDATA[為替レート]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=379</guid>

					<description><![CDATA[目次 はじめに｜Pythonで為替レートを自動取得するってどういうこと？1. Pythonで為替データを扱うメリット✅ 毎日の作業が自動化できる✅ 無料APIを活用して最新データを取得✅ 取得したデータをそのままExce [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2"><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに｜Pythonで為替レートを自動取得するってどういうこと？</a></li><li><a href="#toc2" tabindex="0">1. Pythonで為替データを扱うメリット</a><ol><li><a href="#toc3" tabindex="0">✅ 毎日の作業が自動化できる</a></li><li><a href="#toc4" tabindex="0">✅ 無料APIを活用して最新データを取得</a></li><li><a href="#toc5" tabindex="0">✅ 取得したデータをそのままExcelに保存</a></li><li><a href="#toc6" tabindex="0">✅ 業務でも通用するスキルが身につく</a></li></ol></li><li><a href="#toc7" tabindex="0">2. 必要な環境とライブラリ</a><ol><li><a href="#toc8" tabindex="0">🔧 Python仮想環境の作成</a><ol><li><a href="#toc9" tabindex="0">✅ なぜ仮想環境を使うの？</a></li><li><a href="#toc10" tabindex="0">✅ 仮想環境の作り方（Windows/Mac共通）</a></li><li><a href="#toc11" tabindex="0">✅ 仮想環境の起動方法</a></li></ol></li><li><a href="#toc12" tabindex="0">📦 ライブラリのインストール</a><ol><li><a href="#toc13" tabindex="0">✅ インストールコマンド（仮想環境の中で実行）</a></li><li><a href="#toc14" tabindex="0">✅ ライブラリのインポート方法</a></li></ol></li></ol></li><li><a href="#toc15" tabindex="0">3. 為替APIの仕組みとエンドポイント設定</a><ol><li><a href="#toc16" tabindex="0">🌐 APIってなに？</a></li><li><a href="#toc17" tabindex="0">💱 為替APIとは？</a></li><li><a href="#toc18" tabindex="0">📌 エンドポイントって？</a></li><li><a href="#toc19" tabindex="0">✅ 通貨を指定したい場合は？</a></li></ol></li><li><a href="#toc20" tabindex="0">4. APIから為替レートを取得するPythonコード</a><ol><li><a href="#toc21" tabindex="0">🧪 まずはAPIにアクセスしてみよう！</a></li><li><a href="#toc22" tabindex="0">🔍 解説：このコードで何をしているの？</a></li><li><a href="#toc23" tabindex="0">💡 JSON形式のデータとは？</a></li><li><a href="#toc24" tabindex="0">✅ 必要な情報だけ取り出すには？</a></li></ol></li><li><a href="#toc25" tabindex="0">5. 取得したデータをExcelに書き込む</a><ol><li><a href="#toc26" tabindex="0">📘 Excelファイルを作るには？（Workbook）</a></li><li><a href="#toc27" tabindex="0">🏷️ ヘッダーを追加する（append）</a></li><li><a href="#toc28" tabindex="0">🔄 通貨とレートを1行ずつ追加（forループ＋append）</a></li><li><a href="#toc29" tabindex="0">✅ append()とは？</a></li><li><a href="#toc30" tabindex="0">💡 補足：複数回appendすれば、表形式になる</a></li></ol></li><li><a href="#toc31" tabindex="0">6. Excelファイルの保存と出力の確認</a><ol><li><a href="#toc32" tabindex="0">💾 Excelファイルを保存する（.save()）</a></li><li><a href="#toc33" tabindex="0">✅ 保存できたかどうかを知らせるメッセージ</a></li><li><a href="#toc34" tabindex="0">🔁 全体の流れをまとめると…</a></li><li><a href="#toc35" tabindex="0">📂 実行後の確認方法</a></li></ol></li><li><a href="#toc36" tabindex="0">7. おまけ：日付や時間も一緒に書き込む（発展応用）</a><ol><li><a href="#toc37" tabindex="0">🕒 現在の日付・時刻を取得するには？</a></li><li><a href="#toc38" tabindex="0">📝 Excelの表に日付列を追加するには？</a><ol><li><a href="#toc39" tabindex="0">✅ ヘッダーを修正：</a></li><li><a href="#toc40" tabindex="0">✅ データの書き込み部分を変更：</a></li></ol></li><li><a href="#toc41" tabindex="0">📈 毎日データを記録するログとしても使える！</a></li><li><a href="#toc42" tabindex="0">✅ 補足：時間まで記録したい場合は？</a></li></ol></li><li><a href="#toc43" tabindex="0">8. まとめ</a><ol><li><a href="#toc44" tabindex="0">💡 この記事で学べたこと</a></li><li><a href="#toc45" tabindex="0">📌 自動化の一歩として最適なテーマ！</a></li></ol></li><li><a href="#toc46" tabindex="0">🔗 あわせて読みたい</a><ol><li><a href="#toc47" tabindex="0">🧮 データの扱いに強くなろう！</a></li><li><a href="#toc48" tabindex="0">🧰 API・ファイル操作の基礎固めに！</a></li><li><a href="#toc49" tabindex="0">💡 自動化スキルをレベルアップ！</a></li></ol></li><li><a href="#toc50" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに｜Pythonで為替レートを自動取得するってどういうこと？</span></h2>



<p>「毎日の為替レートを確認して、Excelに手入力するのが正直つらい…」<br>「できれば最新の為替レートを、自動でExcelに保存したい…」</p>



<p>そんな悩みを感じたことはありませんか？</p>



<p>実は、<strong>Pythonを使えば為替レートを自動取得し、そのままExcelファイルに保存することができます。</strong><br>一度仕組みを作ってしまえば、毎日の確認作業や転記ミスから解放され、業務効率を大きく改善できます。</p>



<p>この記事では、<strong>APIを使って最新の為替レートを取得し、PythonでExcelに自動保存する方法</strong>を、プログラミング初心者向けにやさしく解説します。<br>難しそうに聞こえる「API」も、仕組みを理解すれば意外とシンプルです。</p>



<p>経理・財務・輸入業務などで外国通貨を扱う方はもちろん、<br>「Pythonで業務を自動化してみたい」「Excel作業を効率化したい」という方にもおすすめの内容です。</p>



<p>この記事を読むことで、次のことができるようになります。</p>



<ul class="wp-block-list">
<li>Pythonで為替レートを自動取得する方法</li>



<li>為替APIの基本的な使い方</li>



<li>取得したデータをExcelファイルに書き込む手順</li>



<li>実務でも使える、シンプルで分かりやすいコード構成</li>
</ul>



<p>コードは<strong>丸写しで終わらないように、1行ずつ意味を解説</strong>していきます。<br>「なぜこの書き方なのか」が分かるので、Python初心者の方でも安心です。</p>



<p>それでは、Pythonを使った為替レートの自動取得とExcel保存を、一緒に進めていきましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc2">1. Pythonで為替データを扱うメリット</span></h2>



<p>Pythonは、**「データを集めて、加工して、出力する」**という一連の流れを、とてもシンプルに書けるプログラミング言語です。<br>この特性が、<strong>為替レートの自動取得＆Excelへの書き出し</strong>という作業にピッタリなんです。</p>



<p>ここでは、Pythonを使うことで得られる具体的なメリットをいくつか紹介します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc3">✅ 毎日の作業が自動化できる</span></h3>



<p>たとえば「毎朝、為替レートを調べて、Excelに入力する」…こんなルーチン作業、ありませんか？</p>



<p>Pythonを使えば、<strong>その作業をボタン1つ、あるいは時間指定で自動化</strong>できます。人の手を使わないので、入力ミスも防げて一石二鳥！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc4">✅ 無料APIを活用して最新データを取得</span></h3>



<p>多くの為替レート提供サイトでは、<strong>「API」という仕組みでレート情報を提供</strong>しています。<br>Pythonでは <code>requests</code> というライブラリを使うことで、<strong>数行のコードでAPIからデータを取得することが可能</strong>です。</p>



<p>しかも、APIの多くは無料プランを用意しており、登録不要で使えるものもあります（例：exchangerate.host など）。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc5">✅ 取得したデータをそのままExcelに保存</span></h3>



<p>Pythonには <code>openpyxl</code> というライブラリがあり、Excelファイル（.xlsx）の作成・編集が自由自在。<br>今回のように、<strong>「為替レートを日付とともに記録する表」を自動で作る</strong>のも簡単です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc6">✅ 業務でも通用するスキルが身につく</span></h3>



<p>APIの使い方やExcel連携の知識は、<strong>業務で使える実践的なスキル</strong>です。<br>特に、財務・経理・データ分析・エンジニア職などでは、こうしたスキルが評価される場面も多くなっています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>「プログラミングって難しそう…」という方もご安心ください。<br>このあとの手順では、<strong>一つひとつの操作をやさしく丁寧に解説</strong>していきます。</p>



<p>次は、Python環境の準備と必要なライブラリのインストールから始めましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc7">2. 必要な環境とライブラリ</span></h2>



<p>Pythonで為替レートを取得してExcelに書き込むには、<strong>準備がとても大切</strong>です。<br>ここでは、実際にプログラムを書く前にやっておきたい2つの準備――<strong>仮想環境の作成</strong>と<strong>ライブラリのインストール</strong>について説明します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc8">🔧 Python仮想環境の作成</span></h3>



<p>まずは、作業ごとに独立したPython環境をつくっておきましょう。これを**「仮想環境」**といいます。</p>



<h4 class="wp-block-heading"><span id="toc9">✅ なぜ仮想環境を使うの？</span></h4>



<p>Pythonにはたくさんのライブラリがありますが、全部をごちゃまぜに使っていると、<br>「どのツールがどのライブラリを使っていたっけ？」<br>「他のツールとバージョンがぶつかって動かない…」<br>なんてことが起きやすくなります。</p>



<p>仮想環境を使えば、<strong>1つのツール＝1つの専用環境</strong>として管理できるので安心です。</p>



<h4 class="wp-block-heading"><span id="toc10">✅ 仮想環境の作り方（Windows/Mac共通）</span></h4>



<p>ターミナル（またはコマンドプロンプト）で以下のコマンドを入力します：</p>



<pre class="wp-block-preformatted"><code>python -m venv venv<br></code></pre>



<p>すると、<code>venv</code> という名前の仮想環境が作成されます。</p>



<h4 class="wp-block-heading"><span id="toc11">✅ 仮想環境の起動方法</span></h4>



<ul class="wp-block-list">
<li>Windowsの場合：</li>
</ul>



<pre class="wp-block-preformatted"><code>venv\Scripts\activate<br></code></pre>



<ul class="wp-block-list">
<li>Mac/Linuxの場合：</li>
</ul>



<pre class="wp-block-preformatted"><code>source venv/bin/activate<br></code></pre>



<p>うまくいくと、ターミナルの先頭に <code>(venv)</code> と表示されます。これで仮想環境の中に入った状態です！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc12">📦 ライブラリのインストール</span></h3>



<p>今回使うライブラリは以下の2つです：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ライブラリ名</th><th>用途</th></tr></thead><tbody><tr><td><code>requests</code></td><td>為替レートAPIからデータを取得する</td></tr><tr><td><code>openpyxl</code></td><td>Excelファイルの読み書きを行う</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc13">✅ インストールコマンド（仮想環境の中で実行）</span></h4>



<pre class="wp-block-preformatted"><code>pip install requests openpyxl<br></code></pre>



<h4 class="wp-block-heading"><span id="toc14">✅ ライブラリのインポート方法</span></h4>



<p>Pythonコードの最初に以下を記述して、ライブラリを使えるようにします：</p>



<pre class="wp-block-preformatted"><code>import requests<br>from openpyxl import Workbook<br></code></pre>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-point block-box has-border-color has-amber-border-color">
<p><code>import openpyxl</code> とする方法もありますが、今回は <code>Workbook</code> クラスだけ使うので <code>from openpyxl import Workbook</code> の方がシンプルです。</p>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで準備完了！<br>次はいよいよ「APIを使って為替レートを取得する」ステップに進みましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc15">3. 為替APIの仕組みとエンドポイント設定</span></h2>



<p>いよいよここから、<strong>為替レートのデータを取得するための準備</strong>に入ります。<br>そのカギを握るのが、「API」と呼ばれる仕組みです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc16">🌐 APIってなに？</span></h3>



<p>APIとは「Application Programming Interface（アプリケーション・プログラミング・インターフェース）」の略です。</p>



<p>……ちょっと難しく聞こえますが、ざっくり言うと、</p>



<p><strong>「他のサービスから情報を自動で受け取るための窓口」</strong></p>



<p>と考えてください。</p>



<p>たとえば、天気情報・ニュース・為替レート・株価などを自分のプログラムに取り込むには、<br>その情報を提供してくれる「APIのURL」にアクセスして、<strong>機械が読み取れる形式でデータを受け取る</strong>のが一般的です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc17">💱 為替APIとは？</span></h3>



<p>今回使う為替APIは「exchangerate.host」という、<strong>無料で使える便利なAPIサービス</strong>です。</p>



<p><strong>アクセスするURLの例：</strong></p>



<pre class="wp-block-preformatted"><code>https://api.exchangerate.host/latest<br></code></pre>



<p>このURLにアクセスすることで、**「今日の為替レート（EURを基準）」**がJSON形式で返ってきます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc18">📌 エンドポイントって？</span></h3>



<p>APIで使われる「エンドポイント」とは、<strong>情報を取得するためのURLのこと</strong>です。<br>サービスごとに、さまざまなエンドポイントが用意されています。</p>



<p>たとえば：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>エンドポイント</th><th>内容</th></tr></thead><tbody><tr><td><code>/latest</code></td><td>最新の為替レート</td></tr><tr><td><code>/timeseries</code></td><td>過去の為替レート履歴</td></tr><tr><td><code>/convert</code></td><td>通貨変換（例：USD → JPY）</td></tr></tbody></table></figure>



<p>今回はもっともシンプルな <strong>「最新のレート」を取得する <code>/latest</code></strong> を使います。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc19">✅ 通貨を指定したい場合は？</span></h3>



<p>URLの末尾にパラメータをつけて、<strong>取得したい通貨を絞り込むことも可能</strong>です。</p>



<p>たとえば、「USD（米ドル）を基準に、JPY（日本円）のレートを取得したい」なら、こんなURLになります：</p>



<pre class="wp-block-preformatted"><code>https://api.exchangerate.host/latest?base=USD&amp;symbols=JPY<br></code></pre>



<p>このように、**クエリパラメータ（?〜）**を使って情報をカスタマイズできるのがAPIの面白さです！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>ここまでの内容をまとめると、次のようなコードで為替データが取得できます：</p>



<pre class="wp-block-preformatted"><code>import requests<br><br>url = "https://api.exchangerate.host/latest?base=USD"<br>response = requests.get(url)<br>data = response.json()<br>print(data)<br></code></pre>



<p>このコードを実行すると、USDを基準とした通貨レートの一覧が表示されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次は、このAPIから取得したデータを**どのようにPythonで扱っていくのか？**を見ていきましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc20">4. APIから為替レートを取得するPythonコード</span></h2>



<p>ここからは、いよいよ実際に<strong>為替レートのデータをPythonで取得するコード</strong>を書いていきます！</p>



<p>今回は「USD（米ドル）」を基準に、複数の通貨レートを取得する例で進めます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc21">🧪 まずはAPIにアクセスしてみよう！</span></h3>



<p>以下のコードをPythonファイルに書いてみてください：</p>



<pre class="wp-block-preformatted"><code>import requests<br><br># APIのURL（USDを基準）<br>url = "https://api.exchangerate.host/latest?base=USD"<br><br># データ取得<br>response = requests.get(url)<br><br># JSON形式でデータを取り出す<br>data = response.json()<br><br># 内容を確認してみよう<br>print(data)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">🔍 解説：このコードで何をしているの？</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>行番号</th><th>処理内容</th></tr></thead><tbody><tr><td>1行目</td><td><code>requests</code> ライブラリを読み込んで、Webからデータを取得できるようにします。</td></tr><tr><td>4行目</td><td>APIのエンドポイントURLを設定します。ここでは「USDを基準にした最新の為替レート」を取得しています。</td></tr><tr><td>7行目</td><td><code>requests.get()</code> で指定したURLにアクセスし、Webからデータを取得します。</td></tr><tr><td>10行目</td><td><code>response.json()</code> で、取得したデータを<strong>Pythonの辞書（dict）型</strong>に変換します。</td></tr><tr><td>13行目</td><td><code>print()</code>で、実際に取得できたデータを確認しています。</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc23">💡 JSON形式のデータとは？</span></h3>



<p>APIから取得できるデータは、基本的に**「JSON形式」**です。<br>これは「キー（名前）と値（データ）」がセットになった、<strong>人間にも読めるシンプルな形式</strong>です。</p>



<p>例として、こんな形で表示されるはずです：</p>



<pre class="wp-block-preformatted"><code>{<br>  "base": "USD",<br>  "date": "2025-06-18",<br>  "rates": {<br>    "JPY": 157.35,<br>    "EUR": 0.91,<br>    "GBP": 0.78,<br>    ...<br>  }<br>}<br></code></pre>



<p>この中の <code>"rates"</code> の部分が重要で、ここに各通貨のレートが格納されています。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc24">✅ 必要な情報だけ取り出すには？</span></h3>



<p>JSONデータは辞書型なので、<strong>Pythonの辞書のようにキー指定で中身を取り出せます</strong>。</p>



<p>たとえば、すべての通貨レートを取得したい場合は次のように書きます：</p>



<pre class="wp-block-preformatted"><code>for currency, rate in data["rates"].items():<br>    print(f"{currency}: {rate}")<br></code></pre>



<p>このコードを実行すると、次のような出力になります：</p>



<pre class="wp-block-preformatted"><code>JPY: 157.35<br>EUR: 0.91<br>GBP: 0.78<br>...<br></code></pre>



<p>これで、<strong>APIから取得した為替データをPythonで自由に扱える</strong>ようになりました！</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次はいよいよ、取得した為替レートを<strong>Excelファイルに書き込む</strong>手順を解説していきます！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc25">5. 取得したデータをExcelに書き込む</span></h2>



<p>APIから取得した為替レートのデータを、次は<strong>Excelファイルに書き込んで保存</strong>してみましょう。</p>



<p>ここでは <code>openpyxl</code> ライブラリを使って、以下のような作業を行います：</p>



<ul class="wp-block-list">
<li>新しいExcelファイルを作成</li>



<li>ワークシートを準備</li>



<li>為替レートのデータを1行ずつ書き込む</li>



<li>ファイルとして保存</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc26">📘 Excelファイルを作るには？（Workbook）</span></h3>



<p>まずはExcelファイルの「本体」となる**ワークブック（Workbook）**を作ります。以下のコードを追記してみましょう：</p>



<pre class="wp-block-preformatted"><code>from openpyxl import Workbook<br><br># 新しいExcelファイルを作成<br>wb = Workbook()<br><br># アクティブなシートを取得<br>ws = wb.active<br><br># シートの名前を変更（任意）<br>ws.title = "Exchange Rates"<br></code></pre>



<p>ここまでで、空っぽのExcelファイルとシートが1枚できた状態です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc27">🏷️ ヘッダーを追加する（append）</span></h3>



<p>次に、**列のタイトル（ヘッダー）**を書き込みます。</p>



<pre class="wp-block-preformatted"><code># ヘッダーを追加<br>ws.append(["通貨コード", "為替レート"])<br></code></pre>



<p>これで、1行目に「通貨コード」「為替レート」という見出しが入りました。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc28">🔄 通貨とレートを1行ずつ追加（forループ＋append）</span></h3>



<p>ここからは、前のステップで取得した <code>data["rates"]</code> を<strong>for文でループ</strong>して、1行ずつExcelに追加していきます：</p>



<pre class="wp-block-preformatted"><code># 取得したレート情報を書き込む<br>for currency, rate in data["rates"].items():<br>    ws.append([currency, rate])<br></code></pre>



<p>これで、各通貨コード（例: USD, JPY, EUR）と、その為替レートが<strong>行ごとにExcelファイルに追加</strong>されていきます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc29">✅ append()とは？</span></h3>



<p><code>append()</code> は、Excelファイルに<strong>行単位でデータを追加する</strong>ためのメソッドです。</p>



<pre class="wp-block-preformatted"><code>ws.append(["USD", 1.00])  # 「USD | 1.00」という行が追加される<br></code></pre>



<p>リストの形で渡すと、そのまま左から右に順番に書き込まれます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc30">💡 補足：複数回appendすれば、表形式になる</span></h3>



<pre class="wp-block-preformatted"><code>ws.append(["通貨", "レート"])<br>ws.append(["USD", 1.00])<br>ws.append(["JPY", 157.35])<br>ws.append(["EUR", 0.91])<br></code></pre>



<p>こんな感じで書き込むと、Excelでは以下のように見えます：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>通貨</th><th>レート</th></tr></thead><tbody><tr><td>USD</td><td>1.00</td></tr><tr><td>JPY</td><td>157.35</td></tr><tr><td>EUR</td><td>0.91</td></tr></tbody></table></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで、<strong>為替レートデータをExcelに整然と出力する準備</strong>が整いました！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc31">6. Excelファイルの保存と出力の確認</span></h2>



<p>ここまでで、為替レートのデータを<strong>Excelのワークブック（Workbook）に書き込む処理</strong>が完成しました。<br>最後の仕上げは、作成したExcelファイルを<strong>保存して、ユーザーに完了を伝える出力メッセージ</strong>を表示することです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc32">💾 Excelファイルを保存する（.save()）</span></h3>



<p>Excelファイルを保存するには、以下のように <code>.save()</code> メソッドを使います。</p>



<pre class="wp-block-preformatted"><code># ファイル名を指定して保存<br>wb.save("exchange_rates.xlsx")<br></code></pre>



<p>このコードを実行すると、<strong>スクリプトを実行したフォルダに「exchange_rates.xlsx」ファイルが生成</strong>されます。</p>



<p>✅ ファイル名は自由に変えてOKですが、拡張子 <code>.xlsx</code> を忘れずにつけましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc33">✅ 保存できたかどうかを知らせるメッセージ</span></h3>



<p>プログラムの最後に、<strong>処理が正常に終わったことをユーザーに知らせる</strong>出力メッセージを加えておくと、親切で実務的です。</p>



<pre class="wp-block-preformatted"><code>print("為替レートのExcelファイルが保存されました！")<br></code></pre>



<p>さらに、ファイル名や日付を表示しておくと、ログとしても便利です。</p>



<pre class="wp-block-preformatted"><code>from datetime import datetime<br><br>today = datetime.now().strftime("%Y-%m-%d")<br>print(f"[{today}] exchange_rates.xlsx に書き出しが完了しました。")<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc34">🔁 全体の流れをまとめると…</span></h3>



<p>これで、次のような流れが完成しました：</p>



<ol class="wp-block-list">
<li>APIで為替レートを取得</li>



<li>データをExcelに書き込み</li>



<li><code>.xlsx</code>ファイルとして保存</li>



<li>ユーザーにメッセージで通知</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc35">📂 実行後の確認方法</span></h3>



<p>スクリプトを実行した後は、次の点を確認してみてください：</p>



<ul class="wp-block-list">
<li>フォルダ内に <code>exchange_rates.xlsx</code> ファイルがあるか？</li>



<li>開いてみると、通貨コードとレートの一覧が正しく書かれているか？</li>



<li>保存メッセージがターミナルに表示されたか？</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>問題がなければ、<strong>Pythonでの為替レート取得＆Excel出力スクリプトが無事完成</strong>です！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc36">7. おまけ：日付や時間も一緒に書き込む（発展応用）</span></h2>



<p>ここまでで、為替レートの一覧をExcelに書き込む基本的なスクリプトは完成しました。<br>でも、**「このレート、いつ取得したデータだろう？」**と後から見返すこともありますよね。</p>



<p>そこでおすすめなのが、<strong>日付や時刻も一緒にExcelに記録しておく方法</strong>です。<br>Pythonの <code>datetime</code> モジュールを使えば、とても簡単に追加できます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc37">🕒 現在の日付・時刻を取得するには？</span></h3>



<p>以下のように、<code>datetime.now()</code> を使って、今の日時を取得できます。</p>



<pre class="wp-block-preformatted"><code>from datetime import datetime<br><br># 現在日時を取得（例：2025-06-18 15:42:00）<br>now = datetime.now()<br><br># 日付のみ取り出す（例：2025-06-18）<br>date_str = now.strftime("%Y-%m-%d")<br><br># 日時付き（例：2025-06-18 15:42:00）<br>datetime_str = now.strftime("%Y-%m-%d %H:%M:%S")<br></code></pre>



<p><code>strftime()</code> を使うことで、<strong>表示フォーマットを好きな形に変換</strong>できます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc38">📝 Excelの表に日付列を追加するには？</span></h3>



<p>「通貨コード」「レート」だけでなく、「取得日付」も一緒に書き込めるようにしてみましょう。</p>



<h4 class="wp-block-heading"><span id="toc39">✅ ヘッダーを修正：</span></h4>



<pre class="wp-block-preformatted"><code>ws.append(["通貨コード", "為替レート", "取得日"])<br></code></pre>



<h4 class="wp-block-heading"><span id="toc40">✅ データの書き込み部分を変更：</span></h4>



<pre class="wp-block-preformatted"><code>for currency, rate in data["rates"].items():<br>    ws.append([currency, rate, date_str])<br></code></pre>



<p>これで、次のような表がExcelに記録されます：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>通貨コード</th><th>為替レート</th><th>取得日</th></tr></thead><tbody><tr><td>USD</td><td>1.00</td><td>2025-06-18</td></tr><tr><td>JPY</td><td>157.35</td><td>2025-06-18</td></tr><tr><td>EUR</td><td>0.91</td><td>2025-06-18</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc41">📈 毎日データを記録するログとしても使える！</span></h3>



<p>この書き方は、<strong>毎日為替レートを記録するような自動スクリプト</strong>にも応用できます。<br>日付を残しておけば、あとで時系列でグラフを作ることもできますし、データの変化を追うのにも便利です！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc42">✅ 補足：時間まで記録したい場合は？</span></h3>



<p>日付だけでなく、時間も記録したいなら <code>datetime_str</code> を使えばOKです：</p>



<pre class="wp-block-preformatted"><code>ws.append(["通貨コード", "為替レート", "取得日時"])<br><br>for currency, rate in data["rates"].items():<br>    ws.append([currency, rate, datetime_str])<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで、「いつのデータか」をしっかり管理できる、<strong>実用的な為替レート記録ツール</strong>が完成しました！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc43">8. まとめ</span></h2>



<p>今回は、<strong>Pythonを使ってWebから為替レートを自動取得し、Excelに書き込む方法</strong>を解説してきました。</p>



<p>実際にやってみると、たった数十行のコードで、</p>



<ul class="wp-block-list">
<li>最新の為替レートを無料APIから取得</li>



<li>Excelファイルに整形して出力</li>



<li>日付付きの記録も可能</li>
</ul>



<p>といった、<strong>実務でも使える便利なツール</strong>が作れてしまいます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc44">💡 この記事で学べたこと</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ステップ</th><th>内容</th></tr></thead><tbody><tr><td>環境構築</td><td>仮想環境の作成とライブラリのインストール（requests / openpyxl）</td></tr><tr><td>API活用</td><td>為替API（exchangerate.host）からのデータ取得方法</td></tr><tr><td>Excel操作</td><td>openpyxlによるワークブック生成・データ書き込み</td></tr><tr><td>応用</td><td>日付や時間の記録でログ管理にも対応可能</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc45">📌 自動化の一歩として最適なテーマ！</span></h3>



<p>「手作業でやっていた作業をPythonで効率化したい」<br>「APIの扱い方を基礎から学びたい」<br>「Excelとの連携方法を実践したい」</p>



<p>そんな方にとって、今回の内容はまさに<strong>初めの一歩</strong>にピッタリのテーマだったのではないでしょうか？</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Pythonはデータの取得や加工、出力に強く、業務の自動化にも非常に向いています。<br>ぜひこの記事を参考に、あなた自身のアイデアでいろいろな自動ツールを作ってみてくださいね！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc46">🔗 あわせて読みたい</span></h2>



<h3 class="wp-block-heading"><span id="toc47">🧮 データの扱いに強くなろう！</span></h3>



<ul class="wp-block-list">
<li><a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-yaml-file-basic/">【Python入門】YAMLファイルの書き方と使い方｜設定ファイルの操作をわかりやすく解説！</a><br>API連携やツール構築でよく使われるYAML形式について、基本から応用までを解説しています。</li>



<li><a target="_blank" href="https://python.cbagames.jp/2025/06/15/python-matplotlib-graph-beginner/">Pythonでグラフを描く！Matplotlibの使い方を初心者向けにやさしく解説</a><br>取得した為替データをグラフで可視化したい人におすすめです。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc48">🧰 API・ファイル操作の基礎固めに！</span></h3>



<ul class="wp-block-list">
<li><a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-gmail-api-send-receive/">【Python入門】Gmail APIでメール送受信＆添付ファイルを操作する方法をやさしく解説！</a><br>APIの扱いをもっと深く理解したい人向けに、Gmail APIの使い方も学べます。</li>



<li><a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-pyinstaller-exe-guide/">【Win/Mac対応】Pythonスクリプトをexe化！PyInstallerで実行ファイルを作る方法をやさしく解説</a><br>今回の為替ツールを配布用のアプリにしたい場合に便利です。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc49">💡 自動化スキルをレベルアップ！</span></h3>



<p><a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-requirements-txt-install/">Pythonでライブラリを一括インストールする方法｜requirements.txtの使い方をやさしく解説！</a><br>仮想環境の再現や配布時に欠かせない設定ファイルの使い方をマスターできます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc50">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">為替レートのAPIは無料で使えるの？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>はい、無料で使えるAPIもあります。たとえば <a rel="noopener" target="_blank" class="" href="https://exchangerate.host/">exchangerate.host</a> はAPIキー不要で利用可能です。商用利用や高頻度アクセスには有料プランが必要な場合もあります。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">どの通貨の為替レートが取得できますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>APIによりますが、主要な通貨（USD、EUR、JPY、GBPなど）に加えて、100種類以上の通貨をサポートしていることが多いです。<code>symbols</code>パラメータで指定することで特定の通貨だけを取得することもできます。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">データ取得のタイミングを自動化できますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>可能です。Windowsの「タスクスケジューラ」や、Mac/Linuxの「cron」を使えば、毎日決まった時間にスクリプトを実行して最新の為替レートを取得できます。</p>
</div></dd></dl></div>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者向け】Webスクレイピングの基本｜PythonでrequestsとBeautifulSoupを使う方法をやさしく解説</title>
		<link>https://python.cbagames.jp/2025/06/04/web-scraping-requests-beautifulsoup/</link>
					<comments>https://python.cbagames.jp/2025/06/04/web-scraping-requests-beautifulsoup/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Wed, 04 Jun 2025 05:05:37 +0000</pubDate>
				<category><![CDATA[Python入門]]></category>
		<category><![CDATA[BeautifulSoup]]></category>
		<category><![CDATA[HTML解析]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[requests]]></category>
		<category><![CDATA[Webスクレイピング]]></category>
		<category><![CDATA[初心者向け]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=102</guid>

					<description><![CDATA[目次 1. はじめに｜Webスクレイピングってなに？なぜ使うの？■ なんで使うの？2. Webスクレイピングで使う2つの便利なライブラリ2-1. requestsとは？Webページを取得する方法✅ 使い方の例💡 ポイント [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4"><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. はじめに｜Webスクレイピングってなに？なぜ使うの？</a><ol><li><a href="#toc2" tabindex="0">■ なんで使うの？</a></li></ol></li><li><a href="#toc3" tabindex="0">2. Webスクレイピングで使う2つの便利なライブラリ</a><ol><li><a href="#toc4" tabindex="0">2-1. requestsとは？Webページを取得する方法</a><ol><li><a href="#toc5" tabindex="0">✅ 使い方の例</a></li><li><a href="#toc6" tabindex="0">💡 ポイント</a></li></ol></li><li><a href="#toc7" tabindex="0">2-2. BeautifulSoupとは？HTMLを解析して情報を取り出す</a><ol><li><a href="#toc8" tabindex="0">✅ 使い方の例</a></li><li><a href="#toc9" tabindex="0">💡 よく使う操作</a></li></ol></li></ol></li><li><a href="#toc10" tabindex="0">3. 実践！Pythonでスクレイピングしてみよう</a><ol><li><a href="#toc11" tabindex="0">3-1. スクレイピングの基本コード例</a></li><li><a href="#toc12" tabindex="0">🔍 解説</a></li><li><a href="#toc13" tabindex="0">✅ 実行結果の例</a></li><li><a href="#toc14" tabindex="0">3-2. タグの取得・クラス指定・属性の扱い</a><ol><li><a href="#toc15" tabindex="0">✅ 例：リンク（&lt;a&gt;タグ）を全部取得する</a></li><li><a href="#toc16" tabindex="0">✅ 例：特定のclassを持つ要素を取得する</a></li></ol></li><li><a href="#toc17" tabindex="0">✅ ちょっと便利なヒント</a></li></ol></li><li><a href="#toc18" tabindex="0">4. スクレイピングの注意点とマナー</a><ol><li><a href="#toc19" tabindex="0">4-1. まずは「robots.txt」を確認しよう</a></li><li><a href="#toc20" tabindex="0">4-2. アクセスはゆっくり！間隔をあけてアクセスしよう</a></li><li><a href="#toc21" tabindex="0">4-3. 利用規約を読んでおこう</a></li><li><a href="#toc22" tabindex="0">4-4. User-Agentを設定しよう</a></li><li><a href="#toc23" tabindex="0">✅ まとめ：安全・安心にスクレイピングを楽しもう！</a></li></ol></li><li><a href="#toc24" tabindex="0">5. よくあるエラーとその対処法</a><ol><li><a href="#toc25" tabindex="0">5-1. requests.exceptions.ConnectionError が出た！</a><ol><li><a href="#toc26" tabindex="0">❓ どんなエラー？</a></li><li><a href="#toc27" tabindex="0">🛠 よくある原因と対策</a></li></ol></li><li><a href="#toc28" tabindex="0">5-2. AttributeError: 'NoneType' object has no attribute 'text'</a><ol><li><a href="#toc29" tabindex="0">❓ どんなエラー？</a></li><li><a href="#toc30" tabindex="0">🛠 よくある原因と対策</a></li><li><a href="#toc31" tabindex="0">✅ 対策コード例</a></li></ol></li><li><a href="#toc32" tabindex="0">5-3. 403 Forbidden が返ってくる</a><ol><li><a href="#toc33" tabindex="0">❓ どんなエラー？</a></li><li><a href="#toc34" tabindex="0">🛠 よくある原因と対策</a></li></ol></li><li><a href="#toc35" tabindex="0">5-4. UnicodeEncodeError や文字化けする</a><ol><li><a href="#toc36" tabindex="0">❓ どんなエラー？</a></li><li><a href="#toc37" tabindex="0">🛠 対策</a></li></ol></li></ol></li><li><a href="#toc38" tabindex="0">6. まとめ｜スクレイピングの第一歩を踏み出そう</a><ol><li><a href="#toc39" tabindex="0">🧠 本記事のふりかえり</a></li><li><a href="#toc40" tabindex="0">🚀 次のステップは？</a></li></ol></li><li><a href="#toc41" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. はじめに｜Webスクレイピングってなに？なぜ使うの？</span></h2>



<p>こんにちは！Pythonを使った自動化に興味があるみなさん、今回は「Webスクレイピング」というちょっとワクワクする技術を紹介します！</p>



<p>「Webスクレイピング」って聞くと、ちょっと難しそうに感じるかもしれません。でも、実はとってもシンプルな考え方なんです。<br>一言でいうと、<strong>Webサイトに書かれている情報を、プログラムで自動的に取り出す技術</strong>のこと。</p>



<p>たとえばこんなことができます👇</p>



<ul class="wp-block-list">
<li>天気予報サイトから今日の天気を自動でチェック！</li>



<li>ネットショップから商品の価格を集めて一覧にする！</li>



<li>ニュースサイトから最新の記事タイトルをまとめて取得！</li>
</ul>



<p>これを全部、<strong>手作業じゃなくてPythonにやってもらえる</strong>のが魅力なんです。</p>



<h3 class="wp-block-heading"><span id="toc2">■ なんで使うの？</span></h3>



<p>ネットには便利な情報がたくさんありますが、毎回自分で見に行ってコピーするのは大変ですよね。<br>Webスクレイピングを使えば、その面倒な作業を自動化できます。たとえば：</p>



<ul class="wp-block-list">
<li>データ分析をしたい人が、情報を集めるために使う</li>



<li>毎日同じ作業を繰り返す必要がある仕事を効率化できる</li>



<li>自分だけの「情報まとめツール」が作れちゃう！</li>
</ul>



<p>しかも、Pythonの「requests」と「BeautifulSoup」というライブラリを使えば、<strong>ほんの数行のコードで実現</strong>できるんです。難しい知識がなくても大丈夫！</p>



<p>このあとから、実際にWebページを読み取って情報を取り出す方法を、やさしく解説していきますね😊<br>それでは、さっそくWebスクレイピングの世界に踏み出してみましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc3">2. Webスクレイピングで使う2つの便利なライブラリ</span></h2>



<p>PythonでWebスクレイピングをするには、「requests（リクエスツ）」と「BeautifulSoup（ビューティフルスープ）」という2つのライブラリがとっても便利なんです。<br>ここでは、それぞれの役割と使い方をわかりやすく紹介しますね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc4">2-1. requestsとは？Webページを取得する方法</span></h3>



<p>まずは、Webページの内容を「持ってくる」ための道具が<code>requests</code>です。</p>



<p>たとえば、ニュースサイトのURLを<code>requests</code>で指定すると、そのページの中身（HTMLというコードの形）をまるごと取得できます。</p>



<h4 class="wp-block-heading"><span id="toc5">✅ 使い方の例</span></h4>



<pre class="wp-block-preformatted"><code>import requests<br><br>url = "https://example.com"<br>response = requests.get(url)<br><br>print(response.text)<br></code></pre>



<p>上のコードでは、指定したURLからページの情報をゲットして、それを画面に表示しています。<br>この<code>.text</code>の中に、WebページのHTMLがそのまま入っているんです！</p>



<h4 class="wp-block-heading"><span id="toc6">💡 ポイント</span></h4>



<ul class="wp-block-list">
<li><code>requests.get()</code>でWebページにアクセス</li>



<li><code>response.status_code</code>でうまくアクセスできたかを確認（200なら成功！）</li>



<li><code>response.text</code>にHTMLの中身が入っている</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc7">2-2. BeautifulSoupとは？HTMLを解析して情報を取り出す</span></h3>



<p>次に出てくるのが「BeautifulSoup」。<br>これは、取得したHTMLから<strong>必要な部分だけを取り出す</strong>ための道具です。</p>



<p>HTMLって、人間が読むにはごちゃごちゃしていてわかりづらいですよね？<br>でもBeautifulSoupを使えば、「タイトルだけほしい」「リンクだけほしい」など、ピンポイントでデータを取り出せるんです。</p>



<h4 class="wp-block-heading"><span id="toc8">✅ 使い方の例</span></h4>



<pre class="wp-block-preformatted"><code>from bs4 import BeautifulSoup<br><br>soup = BeautifulSoup(response.text, "html.parser")<br>title = soup.title.string<br><br>print(title)<br></code></pre>



<p>このコードでは、ページのタイトルだけを取り出しています。とっても簡単ですね！</p>



<h4 class="wp-block-heading"><span id="toc9">💡 よく使う操作</span></h4>



<ul class="wp-block-list">
<li><code>soup.find("h1")</code>：最初のh1タグを探す</li>



<li><code>soup.find_all("a")</code>：すべてのリンク（aタグ）をリストで取得</li>



<li><code>.text</code>：タグの中の文字を取り出す</li>



<li><code>["href"]</code>：リンク先のURLを取り出す</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このように、<code>requests</code>でWebページをゲットして、<code>BeautifulSoup</code>で必要な情報を取り出す。この2つを組み合わせれば、立派なWebスクレイピングができちゃうんです！</p>



<p>次は、実際にサンプルコードを動かして「どんなふうに情報が取れるか」を体験してみましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc10">3. 実践！Pythonでスクレイピングしてみよう</span></h2>



<p>さぁ、いよいよここからは<strong>実際にPythonでWebスクレイピングをやってみましょう！</strong><br>最初はシンプルなサンプルコードで、「Webページにアクセスして、タイトルを取り出す」ところまでやってみます。</p>



<h3 class="wp-block-heading"><span id="toc11">3-1. スクレイピングの基本コード例</span></h3>



<p>まずは、必要なライブラリをインストールしましょう。まだ入れてない方は、以下のコマンドをターミナルで実行してください。</p>



<pre class="wp-block-preformatted"><code>pip install requests<br>pip install beautifulsoup4<br></code></pre>



<p>これで準備OK！</p>



<p>では、さっそく以下のコードをPythonファイル（たとえば <code>scrape_sample.py</code>）に書いて実行してみましょう👇</p>



<pre class="wp-block-preformatted"><code>import requests<br>from bs4 import BeautifulSoup<br><br># スクレイピングしたいURL<br>url = "https://example.com"<br><br># WebページのHTMLを取得<br>response = requests.get(url)<br><br># BeautifulSoupで解析<br>soup = BeautifulSoup(response.text, "html.parser")<br><br># タイトルを取得して表示<br>print("ページタイトル:", soup.title.string)<br></code></pre>



<h3 class="wp-block-heading"><span id="toc12">🔍 解説</span></h3>



<ul class="wp-block-list">
<li><code>requests.get(url)</code>：指定したURLにアクセスしてHTMLを取得</li>



<li><code>BeautifulSoup(..., "html.parser")</code>：HTMLをきれいに分解して扱いやすくする</li>



<li><code>soup.title.string</code>：HTMLの中にある <code>&lt;title></code> タグの中身だけを取り出す</li>
</ul>



<h3 class="wp-block-heading"><span id="toc13">✅ 実行結果の例</span></h3>



<pre class="wp-block-preformatted"><code>ページタイトル: Example Domain<br></code></pre>



<p>こんなふうに、たった数行のコードでWebページから情報を引っ張ってくることができるんです！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc14">3-2. タグの取得・クラス指定・属性の扱い</span></h3>



<p>「ページタイトル」だけじゃなくて、特定の要素を狙って取ることもできますよ！</p>



<h4 class="wp-block-heading"><span id="toc15">✅ 例：リンク（&lt;a&gt;タグ）を全部取得する</span></h4>



<pre class="wp-block-preformatted"><code>links = soup.find_all("a")<br>for link in links:<br>    print(link.text, "→", link["href"])<br></code></pre>



<p>このコードでは：</p>



<ul class="wp-block-list">
<li><code>&lt;a></code>タグ（リンク）をすべて取り出す</li>



<li><code>link.text</code>でリンクの表示名を取得</li>



<li><code>link["href"]</code>でリンク先のURLを取得</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading"><span id="toc16">✅ 例：特定のclassを持つ要素を取得する</span></h4>



<p>HTMLではよく「class属性」でデザインや区別をつけています。これも簡単に狙えます。</p>



<pre class="wp-block-preformatted"><code>headline = soup.find("h2", class_="main-headline")<br>print(headline.text)<br></code></pre>



<p>このようにして、ピンポイントで必要なデータを抜き出せるんです！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc17">✅ ちょっと便利なヒント</span></h3>



<ul class="wp-block-list">
<li>クラス名に「-」や「_」があるときは正確に書くこと！</li>



<li>タグが見つからないときは <code>None</code> になるので <code>.text</code> を呼ぶとエラーになります → 事前に <code>if</code> でチェックしよう！</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次は、<strong>スクレイピングをするときに気をつけたいマナーやルール</strong>を解説します。<br>知らないとトラブルの原因になることもあるので、しっかり学んでいきましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc18">4. スクレイピングの注意点とマナー</span></h2>



<p>Webスクレイピングはとても便利な技術ですが、<strong>やり方を間違えると相手のWebサイトに迷惑をかけてしまうこともあります</strong>。<br>場合によっては、法律にふれてしまったり、アクセスをブロックされたりすることも…。<br>だからこそ、<strong>マナーを守って正しく使うことがとっても大切</strong>なんです！</p>



<p>ここでは、スクレイピングをするときに気をつけたいルールやマナーをやさしく紹介します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc19">4-1. まずは「robots.txt」を確認しよう</span></h3>



<p>多くのWebサイトには、**<code>robots.txt</code>（ロボッツ・テキスト）**というファイルがあります。</p>



<p>これは、「このページはスクレイピングOKですよ」または「ここはやめてね」といったルールを書いたものです。</p>



<p>たとえば、こんな感じのURLで見られます👇</p>



<pre class="wp-block-preformatted"><code>https://example.com/robots.txt<br></code></pre>



<p>中を見て、スクレイピングしていいかを確認しましょう。<br>もし<code>Disallow: /</code>と書かれていたら、<strong>そのサイト全体が禁止</strong>という意味になります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc20">4-2. アクセスはゆっくり！間隔をあけてアクセスしよう</span></h3>



<p>短い時間に何回もスクレイピングをすると、相手のサーバーに負担がかかってしまいます。<br>人間がクリックするペースよりも速いアクセスは、<strong>「攻撃」とみなされてしまうことも😨</strong></p>



<p>✅ 対策としては…</p>



<pre class="wp-block-preformatted"><code>import time<br><br># アクセスの間に1秒休憩<br>time.sleep(1)<br></code></pre>



<p>このように<code>time.sleep()</code>を使って、<strong>1〜3秒ほどの休憩を入れる</strong>のがマナーです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc21">4-3. 利用規約を読んでおこう</span></h3>



<p>Webサイトの中には、「自動的な取得を禁止します」と<strong>利用規約で明記</strong>しているところもあります。</p>



<p>「公開されてるからOK」と思わずに、<strong>利用規約（Terms of Service）を読んで確認する</strong>クセをつけましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">4-4. User-Agentを設定しよう</span></h3>



<p>サイトによっては、<code>requests</code>を使ってアクセスすると「これはロボットだ！」と判断してアクセスを拒否することがあります。</p>



<p>そんなときは、**User-Agent（ユーザーエージェント）**という設定を使うと通ることがあります。</p>



<pre class="wp-block-preformatted"><code>headers = {<br>    "User-Agent": "Mozilla/5.0"<br>}<br>response = requests.get(url, headers=headers)<br></code></pre>



<p>これで「普通のブラウザから来たよ〜」と伝えることができるんですね。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc23">✅ まとめ：安全・安心にスクレイピングを楽しもう！</span></h3>



<p>スクレイピングはとってもパワフルな技術。でも、そのぶん**「ルールを守って使う」ことがとても大切**です。</p>



<ul class="wp-block-list">
<li><code>robots.txt</code>をチェックする</li>



<li>アクセス頻度は控えめに</li>



<li>利用規約をちゃんと読む</li>



<li>ヘッダー情報を設定する（User-Agent）</li>
</ul>



<p>これらを意識して、安全にWebの情報を活用していきましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc24">5. よくあるエラーとその対処法</span></h2>



<p>Webスクレイピングをしていると、時々うまく動かないことがあります。<br>「なんでエラーになるの？」「コードは合ってるのに…」と戸惑うこともあるかもしれません。</p>



<p>でも大丈夫！<br>ここでは、<strong>初心者がよく出会うエラーとその対処法</strong>をやさしく解説していきます。<br>うまくいかないときのチェックポイントとして、ぜひ参考にしてください！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc25">5-1. requests.exceptions.ConnectionError が出た！</span></h3>



<h4 class="wp-block-heading"><span id="toc26">❓ どんなエラー？</span></h4>



<p>→ Webサイトにアクセスしようとしたけど、<strong>接続できなかった</strong>というエラーです。</p>



<h4 class="wp-block-heading"><span id="toc27">🛠 よくある原因と対策</span></h4>



<ul class="wp-block-list">
<li>URLが間違っている → スペルミスがないか確認！</li>



<li>インターネットに接続されていない → Wi-Fiやネット回線を確認！</li>



<li>アクセスがブロックされている → <code>headers</code>を設定してみよう！</li>
</ul>



<pre class="wp-block-preformatted"><code>headers = {<br>    "User-Agent": "Mozilla/5.0"<br>}<br>requests.get(url, headers=headers)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc28">5-2. AttributeError: 'NoneType' object has no attribute 'text'</span></h3>



<h4 class="wp-block-heading"><span id="toc29">❓ どんなエラー？</span></h4>



<p>→ <code>.find()</code>などで探したタグが<strong>見つからなかったのに、.textしようとしてエラー</strong>になっています。</p>



<h4 class="wp-block-heading"><span id="toc30">🛠 よくある原因と対策</span></h4>



<ul class="wp-block-list">
<li>指定したタグやクラスが存在しない（変更されてるかも！）</li>



<li>HTMLの構造を確認しよう（ブラウザで「検証」してみて）</li>
</ul>



<h4 class="wp-block-heading"><span id="toc31">✅ 対策コード例</span></h4>



<pre class="wp-block-preformatted"><code>title_tag = soup.find("h1")<br>if title_tag:<br>    print(title_tag.text)<br>else:<br>    print("タイトルが見つかりませんでした。")<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc32">5-3. 403 Forbidden が返ってくる</span></h3>



<h4 class="wp-block-heading"><span id="toc33">❓ どんなエラー？</span></h4>



<p>→ サイトが「このアクセスは許可しません」とブロックしています。</p>



<h4 class="wp-block-heading"><span id="toc34">🛠 よくある原因と対策</span></h4>



<ul class="wp-block-list">
<li><code>requests</code>はロボット扱いされやすい → <strong>User-Agentを設定しよう！</strong></li>
</ul>



<pre class="wp-block-preformatted"><code>headers = {<br>    "User-Agent": "Mozilla/5.0"<br>}<br>response = requests.get(url, headers=headers)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc35">5-4. UnicodeEncodeError や文字化けする</span></h3>



<h4 class="wp-block-heading"><span id="toc36">❓ どんなエラー？</span></h4>



<p>→ 日本語などの<strong>文字コード</strong>が原因でうまく表示されないときに起きます。</p>



<h4 class="wp-block-heading"><span id="toc37">🛠 対策</span></h4>



<ul class="wp-block-list">
<li>ファイルに保存するときは <code>encoding="utf-8"</code> を指定！</li>



<li>BeautifulSoupの読み込み時に <code>response.encoding = response.apparent_encoding</code> を追加してみるのも◎</li>
</ul>



<pre class="wp-block-preformatted"><code>response.encoding = response.apparent_encoding<br>soup = BeautifulSoup(response.text, "html.parser")<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>エラーってこわいものに見えるけど、<strong>実はヒントのかたまり</strong>です。<br>一つひとつのエラーメッセージを読んでいけば、「何を直せばいいか」が見えてきます。</p>



<p>慣れてくると、「あ、これはあの対処法だな」とすぐに分かるようになりますよ 😊</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc38">6. まとめ｜スクレイピングの第一歩を踏み出そう</span></h2>



<p>ここまでお読みいただきありがとうございます！<br>今回は、Pythonを使ってWebページの情報を自動で取り出す「Webスクレイピング」について、基本から実践までをやさしく解説してきました。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc39">🧠 本記事のふりかえり</span></h3>



<p>✅ <strong>Webスクレイピングって？</strong><br>→ Webサイトにアクセスして、欲しい情報を自動で取得する技術のこと。</p>



<p>✅ <strong>使うライブラリは？</strong><br>→ <code>requests</code>でWebページを取得、<code>BeautifulSoup</code>でHTMLを解析！</p>



<p>✅ <strong>実際にやってみた！</strong><br>→ <code>soup.title.string</code>でタイトルを取り出したり、<code>find_all("a")</code>でリンクを一覧にしたりできましたね！</p>



<p>✅ <strong>注意点は？</strong><br>→ <code>robots.txt</code>や利用規約をチェックし、アクセス間隔に気をつけてマナーを守ろう！</p>



<p>✅ <strong>エラー対策もばっちり！</strong><br>→ よくあるエラーとその対処法も紹介しました。落ち着いて読み解けば大丈夫！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc40">🚀 次のステップは？</span></h3>



<p>「スクレイピング楽しいかも！」と思えたら、次のようなステップに進んでみましょう👇</p>



<ul class="wp-block-list">
<li>スクレイピングで集めたデータを<strong>CSVファイルに保存</strong>してみる</li>



<li>ニュースサイトや天気サイトなど、<strong>自分の興味があるサイトを対象に練習</strong></li>



<li>さらに一歩進んで、<strong>Googleスプレッドシートに自動で書き込み</strong>するのもおすすめ！</li>
</ul>



<p>👉 参考記事：<a target="_blank" href="https://python.cbagames.jp/2025/06/03/python-web-scraping-to-spreadsheet/">PythonでWebスクレイピングしてスプレッドシートに自動書き込みする方法</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>スクレイピングは、情報収集や自動化の第一歩にぴったりの技術です。<br>慣れてくると、**「自分だけの情報収集ツール」や「業務の効率化ツール」**が作れるようになります。</p>



<p>Pythonと一緒に、あなたのやりたいことを少しずつ形にしていきましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc41">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Webスクレイピングって違法じゃないの？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>基本的には違法ではありませんが、注意が必要です。<br>Webページに公開されている情報であっても、そのサイトの<strong>利用規約やrobots.txt</strong>でスクレイピングを禁止している場合があります。<br>マナーとルールを守って、相手に迷惑をかけないようにしましょう。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">JavaScriptで表示されるデータは取得できないの？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><code>requests</code>では取得できません。<br>JavaScriptで後から読み込まれるデータは、HTMLには最初から含まれていないため、通常のスクレイピングでは見えないのです。</p>



<p>そういうときは、<strong>Selenium（セレニウム）やPlaywright</strong>などのツールを使うことで、ブラウザを自動操作しながらデータを取得することができます。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Python初心者でもできますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>もちろんできます！<br>今回紹介したコードは<strong>10行前後の短いコード</strong>で構成されていますし、わからない単語も1つずつ覚えていけば大丈夫です。<br>まずはこの記事のサンプルコードを真似してみるだけでも、ぐっと理解が深まりますよ</p>
</div></dd></dl></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/04/web-scraping-requests-beautifulsoup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
