カテゴリ: PHP 更新日: 2026/05/25

PHPのcURLを使ったWebスクレイピング入門!初心者でも簡単に学べる方法

PHP の cURL を使った Web スクレイピングの基本
PHP の cURL を使った Web スクレイピングの基本

先生と生徒の会話形式で理解しよう

生徒

「先生、PHPで他のウェブサイトの情報を自動で取得する方法ってありますか?」

先生

「はい、PHPにはcURL(カール)という機能があって、これを使うとウェブページのデータをプログラムで取得することができます。」

生徒

「cURLって聞き慣れない言葉です。どんな仕組みなんですか?」

先生

「簡単にいうと、cURLはPHPがインターネット上のウェブページに“こんにちは、データちょうだい”とお願いして、そのページのHTMLや情報を受け取る機能です。」

1. PHPのcURLとは?

1. PHPのcURLとは?
1. PHPのcURLとは?

PHPのcURLは、インターネット上のデータを取得するための機能です。Webスクレイピングと呼ばれる手法の基本となります。Webスクレイピングとは、人間がブラウザでページを見て情報を読む代わりに、プログラムで自動的に情報を取得することを指します。初心者でもcURLを使うことで、簡単にニュース記事や天気情報、商品情報などを自動で集められます。

2. cURLを使う準備

2. cURLを使う準備
2. cURLを使う準備

まず、PHPにcURLがインストールされているか確認する必要があります。WindowsやMacでは、PHPの設定でcURLが有効になっているか確認してください。有効であれば、すぐにスクレイピングを始めることができます。もし有効でなければ、php.iniという設定ファイルでextension=curlのコメントを外すだけです。

初心者向けに例えると、cURLは「データを取りに行く郵便屋さん」のようなものです。郵便屋さんが来る前に準備しておくことで、確実に情報を受け取れます。

3. 基本的なcURLの使い方

3. 基本的なcURLの使い方
3. 基本的なcURLの使い方

cURLを使ってウェブページのHTMLを取得する基本的なコードは以下の通りです。


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);

echo $html;

上記コードの説明:

  • curl_init():cURLを初期化
  • curl_setopt():取得するURLや設定を指定
  • curl_exec():実際にデータを取得
  • curl_close():cURLを閉じて終了

4. 取得したHTMLから特定の情報を取り出す方法

4. 取得したHTMLから特定の情報を取り出す方法
4. 取得したHTMLから特定の情報を取り出す方法

取得したHTMLから必要な情報だけ取り出すには、preg_matchDOMDocumentを使います。例えば、ページのタイトルだけ取得する場合:


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);

preg_match("/<title>(.*?)<\\/title>/", $html, $matches);
echo "ページタイトルは: " . $matches[1];

このコードでは、正規表現を使ってタグの中身を取り出しています。正規表現とは、文字列の中から特定のパターンを探す方法です。</p> </section> <section class="mb-5"> <div class="text-center mt-2"></div> <h2 id="mokuji_5">5. ヘッダー情報を付けて安全にスクレイピング</h2><!-- ここに画像を追加 ★NoImageはあとで書き換え★ --> <div class="position-relative text-center image-overlay mb-3"> <img src="/img/view/java-exception-introduce-05.jpg?1" class="img-fluid" alt="5. ヘッダー情報を付けて安全にスクレイピング" onerror="this.onerror=null; this.src='/img/view/java-exception-introduce.jpg';"> <div class="overlay"></div> <div class="position-absolute top-50 start-50 translate-middle text-white fw-bold img-overlay-text2">5. ヘッダー情報を付けて安全にスクレイピング</div> </div> <p>ウェブサイトによっては、アクセス元がプログラムだとブロックされる場合があります。そのため、<code>User-Agent</code>を設定してブラウザからアクセスしているように見せることができます。</p> <pre class="line-numbers" data-line=""><code class="language-php"> $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); $html = curl_exec($ch); curl_close($ch); echo $html; </code></pre> <p>これにより、より安全にWebスクレイピングが行えます。User-Agentはアクセスしているブラウザの情報で、ウェブサイトはこれを見てアクセス元を判断します。</p> </section> <section class="mb-5"> <h2 id="mokuji_6">6. 複数のページを自動で取得する方法</h2><!-- ここに画像を追加 ★NoImageはあとで書き換え★ --> <div class="position-relative text-center image-overlay mb-3"> <img src="/img/view/java-exception-introduce-06.jpg?1" class="img-fluid" alt="6. 複数のページを自動で取得する方法" onerror="this.onerror=null; this.src='/img/view/java-exception-introduce.jpg';"> <div class="overlay"></div> <div class="position-absolute top-50 start-50 translate-middle text-white fw-bold img-overlay-text2">6. 複数のページを自動で取得する方法</div> </div> <p>例えば、ニュースサイトの複数ページを順番に取得する場合は、ループを使うと便利です。</p> <pre class="line-numbers" data-line=""><code class="language-php"> for ($i = 1; $i <= 3; $i++) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com/page" . $i); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); curl_close($ch); echo "ページ".$i."の内容:<br>"; echo $html . "<hr>"; } </code></pre> <p>このコードでは、ページ番号を変えながら3ページ分のHTMLを取得しています。初心者でもループ処理を理解すると、複数ページのスクレイピングが簡単になります。</p> </section> <section class="mb-5"> <h2 id="mokuji_7">7. エラー処理と安全対策</h2><!-- ここに画像を追加 ★NoImageはあとで書き換え★ --> <div class="position-relative text-center image-overlay mb-3"> <img src="/img/view/java-exception-introduce-07.jpg?1" class="img-fluid" alt="7. エラー処理と安全対策" onerror="this.onerror=null; this.src='/img/view/java-exception-introduce.jpg';"> <div class="overlay"></div> <div class="position-absolute top-50 start-50 translate-middle text-white fw-bold img-overlay-text2">7. エラー処理と安全対策</div> </div> <p>スクレイピングを行うときには、エラー処理も重要です。例えば、ウェブページが存在しない場合や接続できない場合に備えて、<code>curl_errno()</code>や<code>curl_error()</code>で確認できます。</p> <pre class="line-numbers" data-line=""><code class="language-php"> $ch = curl_init("https://example.com/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); if(curl_errno($ch)) { echo "エラー発生: " . curl_error($ch); } else { echo "正常に取得できました。"; } curl_close($ch); </code></pre> <p>これにより、スクレイピング中の問題を把握でき、プログラムの安定性を高められます。初めてでも安全にWebスクレイピングができます。</p> </section> <section class="mb-5"> <h2 id="mokuji_8">8. PHPでのスクレイピングの注意点</h2><!-- ここに画像を追加 ★NoImageはあとで書き換え★ --> <div class="position-relative text-center image-overlay mb-3"> <img src="/img/view/java-exception-introduce-08.jpg?1" class="img-fluid" alt="8. PHPでのスクレイピングの注意点" onerror="this.onerror=null; this.src='/img/view/java-exception-introduce.jpg';"> <div class="overlay"></div> <div class="position-absolute top-50 start-50 translate-middle text-white fw-bold img-overlay-text2">8. PHPでのスクレイピングの注意点</div> </div> <p>最後に、Webスクレイピングの際には著作権や利用規約に注意しましょう。無断で大量アクセスするとサーバーに負荷をかけたり、法的問題になることがあります。スクレイピングは、自分が許可された範囲で行うことが大切です。</p> <p>まとめると、PHPのcURLを使うことで、初心者でも簡単にWebスクレイピングができ、HTMLの取得、情報抽出、複数ページの自動処理、エラー処理まで幅広く学べます。</p> </section><section class="mb-5"> <h2 id="mokuji_9">まとめ</h2><!-- ここに画像を追加 ★NoImageはあとで書き換え★ --> <div class="position-relative text-center image-overlay mb-3"> <img src="/img/view/java-exception-introduce-09.jpg?1" class="img-fluid" alt="まとめ" onerror="this.onerror=null; this.src='/img/view/java-exception-introduce.jpg';"> <div class="overlay"></div> <div class="position-absolute top-50 start-50 translate-middle text-white fw-bold img-overlay-text2">まとめ</div> </div> <h3 class="fw-bold fs-5 mt-4">PHPのcURLとWebスクレイピングの重要ポイント</h3> <p> この記事では、PHPのcURLを利用してウェブページの情報を取得する方法について学びました。cURLはPHPで外部サイトにアクセスしてHTMLデータを取得できる非常に便利な機能であり、Webスクレイピングの基礎となる重要な技術です。プログラミング初心者でも理解しやすい構造になっており、ニュースサイトの情報取得や商品情報の収集、価格調査、データ分析などさまざまな用途で活用できます。 </p> <p> Webスクレイピングとは、ブラウザで人間が閲覧しているウェブページの内容を、プログラムを使って自動的に取得する技術です。PHPのcURLを使えば、指定したURLにアクセスしてページのHTMLを取得し、その中から必要な情報だけを抽出できます。例えばタイトルタグや記事の見出し、商品名などを取り出すことで、データ収集を自動化することが可能になります。 </p> <p> 基本的な流れとしては、まず<code>curl_init()</code>でcURLを初期化し、<code>curl_setopt()</code>で取得するURLや設定を指定します。その後、<code>curl_exec()</code>を実行することでウェブページのHTMLを取得し、最後に<code>curl_close()</code>で処理を終了します。この流れはPHPでWebスクレイピングを行う際の基本パターンとなります。 </p> <p> また、取得したHTMLの中から必要な情報を取り出すためには、正規表現やDOM解析を利用します。例えば<code>preg_match</code>を使うと、HTMLタグの中の文字列を簡単に抽出できます。これはニュースタイトルの取得や記事の見出しの取得など、多くのスクレイピング処理で利用される重要なテクニックです。 </p> <p> 実際のWebスクレイピングでは、アクセス時にUser-Agentを設定することも大切です。User-Agentとはブラウザ情報のことで、これを設定することで通常のブラウザからアクセスしているように見せることができます。多くのウェブサイトはプログラムからのアクセスを制限する場合があるため、この設定を行うことで安定したデータ取得が可能になります。 </p> <p> さらに、ループ処理を使えば複数ページの情報を自動で取得することもできます。例えばニュースサイトのページ番号を変えながら順番に取得することで、複数の記事をまとめて収集できます。これはデータ収集の自動化において非常に便利なテクニックです。 </p> <p> そして実際の開発ではエラー処理も重要になります。ウェブサイトに接続できない場合やURLが間違っている場合には、<code>curl_errno()</code>や<code>curl_error()</code>を使って問題を確認することができます。これによりプログラムの安定性が向上し、安全なスクレイピング処理を行うことができます。 </p> <p> Webスクレイピングを行う際には、サイトの利用規約や著作権にも注意する必要があります。大量アクセスはサーバーに負荷をかける可能性があるため、適切な間隔を空けてアクセスすることが大切です。正しくルールを守って利用することで、PHPのcURLは非常に強力なデータ収集ツールになります。 </p> <h3 class="fw-bold fs-5 mt-4">理解を深めるサンプルプログラム</h3> <p> 最後に、PHPのcURLを使った簡単なスクレイピングのサンプルコードを紹介します。このサンプルではウェブページのHTMLを取得し、タイトルタグの情報を取り出します。 </p> <pre class="line-numbers" data-line=""><code class="language-php"> $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0"); $html = curl_exec($ch); if(curl_errno($ch)){ echo "エラーが発生しました: " . curl_error($ch); }else{ preg_match("/<title>(.*?)<\\/title>/", $html, $title); echo "ページタイトル: " . $title[1]; } curl_close($ch); </code></pre> <p> このようにPHPのcURLを利用すると、ウェブページからHTMLを取得し、必要な情報を自動で抽出することができます。プログラムの構造もシンプルで、初心者でも理解しやすいのが特徴です。スクレイピングの基礎として、この処理の流れをしっかり覚えておくと応用の幅が広がります。 </p> <div class="fw-bold fs-4 mt-4">先生と生徒の振り返り会話</div> <div class="card p-3"> <p><i class="bi bi-person-circle"></i> <strong>生徒</strong></p> <p> 「先生、今回の記事を読んでPHPのcURLがどんなものか少し分かってきました。つまり、ウェブサイトにアクセスしてHTMLを取得するための機能なんですよね。」 </p> <p><i class="bi bi-person-fill"></i> <strong>先生</strong></p> <p> 「その通りです。PHPのcURLは、プログラムからウェブページにアクセスしてデータを取得するための仕組みです。これを使うことでWebスクレイピングが可能になります。」 </p> <p><i class="bi bi-person-circle"></i> <strong>生徒</strong></p> <p> 「スクレイピングというのは、人がブラウザで見ている情報をプログラムが自動で取得する技術でしたね。ニュースサイトや商品情報の取得にも使えるんですよね。」 </p> <p><i class="bi bi-person-fill"></i> <strong>先生</strong></p> <p> 「はい、その通りです。例えばニュースタイトルを集めたり、商品の価格を比較したりするような処理もPHPのcURLで実現できます。」 </p> <p><i class="bi bi-person-circle"></i> <strong>生徒</strong></p> <p> 「あと、User-Agentを設定することでブラウザのようにアクセスできるというのも重要なポイントでしたね。」 </p> <p><i class="bi bi-person-fill"></i> <strong>先生</strong></p> <p> 「よく覚えていますね。実際のスクレイピングではアクセス制限がある場合も多いので、User-Agent設定やエラー処理を行うことが大切です。」 </p> <p><i class="bi bi-person-circle"></i> <strong>生徒</strong></p> <p> 「ループ処理を使えば複数ページのデータも自動で取得できるので、データ収集の効率がかなり上がりそうですね。」 </p> <p><i class="bi bi-person-fill"></i> <strong>先生</strong></p> <p> 「その通りです。PHPのcURLはWebスクレイピングの基本技術なので、この流れを理解しておくとデータ収集や自動化処理など様々な開発に応用できます。」 </p> <p><i class="bi bi-person-circle"></i> <strong>生徒</strong></p> <p> 「今日の内容で、PHPのcURLを使ったWebスクレイピングの基本が理解できました。これからはHTML解析やDOM操作なども勉強して、もっと高度なデータ取得ができるようになりたいです。」 </p> <p><i class="bi bi-person-fill"></i> <strong>先生</strong></p> <p> 「素晴らしい意欲ですね。今回学んだcURLの基礎を土台にして、DOM解析やデータ保存なども学んでいけば、実用的なスクレイピングプログラムが作れるようになりますよ。」 </p> </div> </section> <section id="related-seminar" class="mt-5 mb-5 px-2"> <div class="card border-blue shadow-sm overflow-hidden mx-auto" style="border-width: 2px; border-radius: 1.5rem;"> <div class="card-header bg-blue text-white py-4 text-center border-0"> <div class="d-inline-flex align-items-center"> <i class="bi bi-mortarboard-fill me-2 fs-4"></i> <span class="fw-bold fs-5">ハローワーク講師による直接指導【PHP実務設計実践セミナー】</span> </div> </div> <div class="card-body p-2"> <div class="text-center mb-5"> <h3 class="fw-bold text-dark fs-4 mb-3" style="line-height: 1.4; font-size: 1.8rem;"> ハローワーク講師が伝授!未経験から「PHPエンジニア」へ飛躍するための2時間集中実践。 </h3> <p class="text-secondary fs-6 mb-0"> <i class="bi bi-patch-check-fill text-blue me-2"></i> 実務10年PL×職業訓練講師。独学では辿り着けない「商用開発の正解」を2時間で。 </p> </div> <div class="text-center mb-5 pb-2"> <img src="/event/uploads/events/1/1783300462_mokunoku_html1.png" alt="PHP実務設計実践セミナー|神スクール" class="img-fluid rounded-4 shadow-sm border" style="max-height: 400px; width: auto;"> </div> <div class="seminar-detail-content mx-auto" style="max-width: 800px;"> <div class="bg-light p-4 p-md-5 rounded-4 border-start border-5 border-blue mb-5 shadow-sm"> <div class="seminar-text text-dark fs-6" style="line-height: 1.4; letter-spacing: 0.02em;"> <div class="seminar-body"> <h3 class="h5 fw-bold text-<?php echo COLOR; ?> mb-3"> 「現場のPHP」を極める。モダンなWeb開発と保守性の高いシステム設計の本質。 </h3> <p class="text-muted small mb-4"> 本講座では、Web開発の標準である<strong>PHP</strong>の真価を引き出し、数年先もメンテナンス可能な「プロのコード」を書くための思考法を学びます。単なる文法解説ではなく、<strong>Laravel等のフレームワーク習得に必須となる知識</strong>や、実務で不可欠な<strong>セキュリティ対策</strong>を120分に濃縮して体験します。 </p> <div class="p-3 border rounded-3 bg-light mb-4 shadow-sm"> <h4 class="h6 fw-bold border-bottom pb-2 mb-3"> <i class="bi bi-gear-wide-connected me-2 text-secondary"></i>具体的なワークショップ内容と環境 </h4> <div class="small"> <p class="mb-2"><strong>【つくるもの】</strong><br> 実務のビジネスロジックを想定した「セキュアな会員予約システム」のコア機能を構築します。<strong>PDOを用いたデータベース連携</strong>、SQLインジェクション対策、そして<strong>DRY原則(二重書きの禁止)</strong>に基づいたクラス設計を実際にコードに落とし込みます。</p> <p class="mb-0"><strong>【開発環境】</strong><br> <strong>VS Code</strong>(またはPhpStorm)を使用。実務10年のPLが現場で使うデバッグ手法や、<strong>Composer</strong>を活用したライブラリ管理など、PHPエンジニアとしての「型」をハローワーク講師の視点で伝授します。</p> </div> </div> <div class="mb-4"> <h4 class="h6 fw-bold mb-3"><i class="bi bi-check-circle me-2"></i>この120分で得られる3つの革新スキル</h4> <div class="row g-3"> <div class="col-12"> <div class="p-2 border-start border-3 border-<?php echo COLOR; ?> ps-3"> <span class="fw-bold d-block small">1. フレームワーク(Laravel)への橋渡し</span> <p class="x-small text-muted mb-0">なぜLaravelを使うのか?その背景にあるPHPオブジェクト指向の基礎を完璧に理解します。</p> </div> </div> <div class="col-12"> <div class="p-2 border-start border-3 border-<?php echo COLOR; ?> ps-3"> <span class="fw-bold d-block small">2. 現場基準のセキュリティ実装</span> <p class="x-small text-muted mb-0">XSSやCSRF対策など、Webエンジニアとして「絶対に外せない」堅牢なコードの書き方を習得します。</p> </div> </div> <div class="col-12"> <div class="p-2 border-start border-3 border-<?php echo COLOR; ?> ps-3"> <span class="fw-bold d-block small">3. 20名規模のPLが認める「綺麗なコード」</span> <p class="x-small text-muted mb-0">後から見直しても迷わない、保守性と可読性を追求したプロのコーディング規約をマスターします。</p> </div> </div> </div> </div> <div class="mt-4 pt-3 border-top"> <p class="x-small text-secondary"> ※本講座は、PHPの基礎学習を終えた方向けの<strong>「実務橋渡し講座」</strong>です。ハローワーク職業訓練講師も務める運営者が、あなたの市場価値を最大化させるために全力でバックアップします。 </p> </div> </div> </div> </div> <div class="d-grid gap-3 text-center"> <a href="/event/1" class="btn btn-blue text-white btn-lg py-3 fw-bold shadow-sm transition-all rounded-pill" style="font-size: 1.25rem;"> <i class="bi bi-rocket-takeoff me-2"></i>このセミナーで「現場のスキル」を習得する </a> <div class="mt-4 p-4 bg-white border border-dashed rounded-4 shadow-sm"> <div class="fw-bold text-dark mb-2" style="font-size: 1.1rem;"> <i class="bi bi-person-badge-fill text-blue me-2"></i>「本物の実務知見」を、最短ルートで。 </div> <p class="small text-muted mb-0"> 20名規模を率いる現役PLかつ、公的機関での指導実績を持つ「神スクール」の講師陣が、あなたの悩みを直接解決。初心者からでも「市場価値の高いエンジニア」への第一歩を支援します。 </p> </div> </div> </div> </div> </div> </section> <style> .transition-all { transition: all 0.3s ease; } .transition-all:hover { transform: translateY(-3px); opacity: 0.9; } #related-seminar .card { background-color: #fff; } </style> </main> <!-- 【共通】記事レビューコメント --> <!---------------------------------------------------------- ■口コミ情報 ----------------------------------------------------------> <div class="subTitle mt-4" id="review">コメント</div> <div class="text-center mb-3"> <div class="btn btn-lg btn-secondary text-white shadow-sm mt-1">コメント投稿は、ログインしてください</div> </div> <p>まだ口コミはありません。</p> <script> //---------------------------------------- // 各口コミのいいね //---------------------------------------- function toggleReviewFavorite(reviewId) { $.ajax({ url: "../common/common-favorite-update.php", type: "POST", dataType: "json", data: { table_name: "blog_review_favorites", item_id: reviewId }, success: function(response) { if (response.success) { // お気に入り数の更新 $('#likeCount_' + reviewId).text(response.favoriteCount); // ハートのアイコンの更新 var heartIconElement = $('#heartIcon_' + reviewId); if (heartIconElement.hasClass('bi-heart-fill')) { heartIconElement.removeClass('bi-heart-fill').addClass('bi-heart'); } else { heartIconElement.removeClass('bi-heart').addClass('bi-heart-fill'); } } else { console.error("Error: " + response.message); } }, error: function(xhr, status, error) { console.error("XHR Error: " + error); } }); } </script> <!-- モーダル(エラーメッセージ) --> <div class="modal fade" id="loginModal" tabindex="-1" aria-labelledby="loginModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="loginModalLabel">ログインしてください</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> いいねをするにはログインが必要です。<br> <a class="d-none" href="/user-login.php" class="btn btn-primary mt-3">ログインページへ</a> </div> </div> </div> </div> <!-- 関連ページのリンクを表示 --> <div class="mt-5"> <h5>関連記事:</h5> <div class="col-12 small"> ・<a href="/php/web-scraping/2043" title="PHP の スクレイピングでのエラー対策(タイムアウト・403エラーの回避)"> PHP の スクレイピングでのエラー対策(タイムアウト・403エラーの回避) | PHPスクレイピングのエラー対策完全ガイド!タイムアウト・403エラーを初心者向けに解説 </a> </div> <div class="col-12 small"> ・<a href="/php/web-scraping/2042" title="PHP の Web スクレイピングの法律と禁止サイトについて"> PHP の Web スクレイピングの法律と禁止サイトについて | PHPのWebスクレイピングの法律と禁止サイトを初心者向けに徹底解説 </a> </div> <div class="col-12 small"> ・<a href="/php/web-scraping/2041" title="PHP の Selenium を使った JavaScript レンダリング対応スクレイピング"> PHP の Selenium を使った JavaScript レンダリング対応スクレイピング | PHPでSeleniumを使ったJavaScriptレンダリング対応スクレイピング完全ガイド </a> </div> <div class="col-12 small"> ・<a href="/php/web-scraping/2040" title="PHP の JSON データのスクレイピング(API からデータ取得)"> PHP の JSON データのスクレイピング(API からデータ取得) | PHPでJSONデータをスクレイピング!APIから情報を取得する方法を初心者向けに解説 </a> </div> <div class="col-12 small"> ・<a href="/php/web-scraping/2039" title="PHP の 正規表現(preg_match, preg_replace)を使ったデータ抽出"> PHP の 正規表現(preg_match, preg_replace)を使ったデータ抽出 | PHPで正規表現を使ったWebスクレイピング入門!preg_matchとpreg_replaceの使い方 </a> </div> <div class="col-12 small"> ・<a href="/php/web-scraping/2037" title="PHP の Simple HTML DOM Parser の活用(外部ライブラリ)"> PHP の Simple HTML DOM Parser の活用(外部ライブラリ) | PHPでWebスクレイピング!Simple HTML DOM Parserを使った初心者向け解説 </a> </div> <div class="col-12 small"> ・<a href="/php/web-scraping/2036" title="PHP の DOMDocument を使った HTML の解析方法"> PHP の DOMDocument を使った HTML の解析方法 | PHPのDOMDocumentを使ったWebスクレイピング完全ガイド!初心者でもHTML解析が簡単に </a> </div> <div class="col-12 small"> ・<a href="/php/web-scraping/2035" title="PHP の file_get_contents() で HTML を取得する方法"> PHP の file_get_contents() で HTML を取得する方法 | PHPでWebスクレイピング!file_get_contents()でHTMLを取得する方法【初心者向け完全解説】 </a> </div> </div> <a href="/php/web-scraping/" class="btn btn-secondary mt-4">PHP の Web スクレイピングの記事一覧へ</a> </div><!-- col【コンテンツ部】 --> <!-- col【サイドバー】 --> <div class="col-lg-3 col-12 p-2"> <!-- 【共通】サイドバー --> <div class="card mt-1"> <div class="card-header"> 新着記事 </div> <div class="card-body"> <!-- 【共通】新着記事 --> <div class="row"> <div class="col-lg-12 col-6 g-2"> <div class="border mt-2 p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-bell-fill"></i> New1 </div> <a href="/php/control-flow/20" class="d-block position-relative"> <img src="/img/top/new01.jpg?1" class="img-fluid"> </a> <div class="mt-1 text-start"> <span class="badge bg-info">PHP</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/php/control-flow/20" class="d-block position-relative"> <div class="fw-bold d-inline text-break">PHP の foreach ループ(配列・連想配列の処理)</div> </a> </div> <div class='text-secondary small mb-2'>PHPのforeachループを完全ガイド!初心者でもわかる配列・連想配列の処理</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border mt-2 p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-bell-fill"></i> New2 </div> <a href="/python/list/180" class="d-block position-relative"> <img src="/img/top/new02.jpg?1" class="img-fluid"> </a> <div class="mt-1 text-start"> <span class="badge bg-purple">Python</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/python/list/180" class="d-block position-relative"> <div class="fw-bold d-inline text-break">Pythonでリストを分割する方法(スライス / split() / itertools)</div> </a> </div> <div class='text-secondary small mb-2'>Pythonでリストを分割する方法(スライス / split() / itertools)</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border mt-2 p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-bell-fill"></i> New3 </div> <a href="/python/functions/224" class="d-block position-relative"> <img src="/img/top/new03.jpg?1" class="img-fluid"> </a> <div class="mt-1 text-start"> <span class="badge bg-purple">Python</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/python/functions/224" class="d-block position-relative"> <div class="fw-bold d-inline text-break">Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用</div> </a> </div> <div class='text-secondary small mb-2'>Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border mt-2 p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-bell-fill"></i> New4 </div> <a href="/python/control-flow/168" class="d-block position-relative"> <img src="/img/top/new04.jpg?1" class="img-fluid"> </a> <div class="mt-1 text-start"> <span class="badge bg-purple">Python</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/python/control-flow/168" class="d-block position-relative"> <div class="fw-bold d-inline text-break">Pythonのエラーメッセージの読み方!よくあるエラーと解決方法</div> </a> </div> <div class='text-secondary small mb-2'>Pythonのエラーメッセージの読み方!よくあるエラーと解決方法</div> </div> </div> </div> <div class="text-center mt-2"></div> </div><!-- card-body --> </div><!-- card --> <div class="card mt-3"> <div class="card-header"> 人気記事 </div> <div class="card-body"> <!-- 【共通】記事ランキング --> <div class="row"> <div class="col-lg-12 col-6 g-2"> <div class="border p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-trophy-fill"></i> No.1 </div> <a href="/php/session/291" class="d-block position-relative"> <img src="/img/top/rank01.jpg?2" class="img-fluid" alt="Java&Spring記事人気No1"> </a> <div class="mt-1 text-start"> <span class="badge bg-info">PHP</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/php/session/291" class="d-block position-relative"> <div class="fw-bold d-inline text-break">PHP の認証機能を実装する方法(ログイン・ログアウト処理)</div> </a> <span class="d-none">69</span> </div> <div class='text-secondary small mb-2'>PHPの認証機能を実装する方法!初心者でもわかるログイン・ログアウト処理の基本</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-trophy-fill"></i> No.2 </div> <a href="/php/date-time/279" class="d-block position-relative"> <img src="/img/top/rank02.jpg?2" class="img-fluid" alt="Java&Spring記事人気No2"> </a> <div class="mt-1 text-start"> <span class="badge bg-info">PHP</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/php/date-time/279" class="d-block position-relative"> <div class="fw-bold d-inline text-break">PHP のカウントダウンタイマーを作る方法</div> </a> <span class="d-none">62</span> </div> <div class='text-secondary small mb-2'>PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-trophy-fill"></i> No.3 </div> <a href="/php/string/24" class="d-block position-relative"> <img src="/img/top/rank03.jpg?2" class="img-fluid" alt="Java&Spring記事人気No3"> </a> <div class="mt-1 text-start"> <span class="badge bg-info">PHP</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/php/string/24" class="d-block position-relative"> <div class="fw-bold d-inline text-break">PHP の文字列のフォーマット(sprintf, printf)</div> </a> <span class="d-none">61</span> </div> <div class='text-secondary small mb-2'>PHP の文字列のフォーマット(sprintf, printf)</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-trophy-fill"></i> No.4 </div> <a href="/python/date-time/505" class="d-block position-relative"> <img src="/img/top/rank04.jpg?2" class="img-fluid" alt="Java&Spring記事人気No4"> </a> <div class="mt-1 text-start"> <span class="badge bg-purple">Python</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/python/date-time/505" class="d-block position-relative"> <div class="fw-bold d-inline text-break">Pythonで経過時間を計測する方法(time.perf_counter() / time.sleep())</div> </a> <span class="d-none">59</span> </div> <div class='text-secondary small mb-2'>Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-trophy-fill"></i> No.5 </div> <a href="/python/list/176" class="d-block position-relative"> <img src="/img/top/rank05.jpg?2" class="img-fluid" alt="Java&Spring記事人気No5"> </a> <div class="mt-1 text-start"> <span class="badge bg-purple">Python</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/python/list/176" class="d-block position-relative"> <div class="fw-bold d-inline text-break">Pythonのリストを反転(逆順)する方法(reverse() /[::-1])</div> </a> <span class="d-none">52</span> </div> <div class='text-secondary small mb-2'>Pythonのリストを反転(逆順)する方法を解説!初心者向けにreverseメソッドとスライス表記[::−1]を丁寧に説明</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-trophy-fill"></i> No.6 </div> <a href="/php/forms/32" class="d-block position-relative"> <img src="/img/top/rank06.jpg?2" class="img-fluid" alt="Java&Spring記事人気No6"> </a> <div class="mt-1 text-start"> <span class="badge bg-info">PHP</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/php/forms/32" class="d-block position-relative"> <div class="fw-bold d-inline text-break">PHP のフォームデータの受け取り($_POST, $_GET)</div> </a> <span class="d-none">52</span> </div> <div class='text-secondary small mb-2'>PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-trophy-fill"></i> No.7 </div> <a href="/python/functions/224" class="d-block position-relative"> <img src="/img/top/rank07.jpg?2" class="img-fluid" alt="Java&Spring記事人気No7"> </a> <div class="mt-1 text-start"> <span class="badge bg-purple">Python</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/python/functions/224" class="d-block position-relative"> <div class="fw-bold d-inline text-break">Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用</div> </a> <span class="d-none">51</span> </div> <div class='text-secondary small mb-2'>Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用</div> </div> </div> <div class="col-lg-12 col-6 g-2"> <div class="border p-3 h-100 shadow position-relative"> <div class="position-absolute2 bg-opacity-50 text-white w-100 bg-blue fs-5 z-1 ps-2 text-start"> <i class="bi bi-trophy-fill"></i> No.8 </div> <a href="/php/security/377" class="d-block position-relative"> <img src="/img/top/rank08.jpg?2" class="img-fluid" alt="Java&Spring記事人気No8"> </a> <div class="mt-1 text-start"> <span class="badge bg-info">PHP</span> </div> <div class="d-flex justify-content-center fs-6 mb-2"> <a href="/php/security/377" class="d-block position-relative"> <div class="fw-bold d-inline text-break">PHP のセキュリティチェックリスト</div> </a> <span class="d-none">49</span> </div> <div class='text-secondary small mb-2'>PHPのセキュリティチェックリストを丁寧に解説!初心者でも理解できる安全対策ガイド</div> </div> </div> </div> <div class="text-center mt-2"></div> </div><!-- card-body --> </div><!-- card --> <aside class="mt-4 mb-4 shadow-sm border-0 rounded-4"> <div class="card border-0 rounded-4 overflow-hidden"> <div class="card-header bg-dark text-white py-3 border-0"> <div class="fw-bold small mb-1 opacity-75 text-uppercase" style="letter-spacing: 0.1em;">職業訓練講師が直接指導</div> <div class="h6 fw-bold mb-0"> <i class="bi bi-patch-check-fill me-2 text-warning"></i>実務直結・短期集中セミナー </div> </div> <div class="card-body p-3 bg-white"> <div class="p-3 mb-3 bg-light rounded-4 border-start border-4 border-blue"> <p class="small text-dark fw-bold mb-1" style="font-size: 0.8rem;"> 挫折ゼロを約束する「神解説」 </p> <p class="text-muted mb-0" style="font-size: 0.75rem; line-height: 1.5;"> 実務10年PLが、PHP・Pythonの「現場で動く」技術を厳選。限定特典付きの特別講義。 </p> </div> <div class="mb-4 pb-3 border-bottom last-child-border-0"> <a href="/event/1" class="d-block overflow-hidden rounded-4 mb-2 shadow-sm border"> <img src="/event/uploads/events/1/1783300462_mokunoku_html1.png" class="img-fluid transition-effect" style="height:140px; object-fit:cover; width:100%;" alt="ハローワーク講師が伝授!未経験から「PHPエンジニア」へ飛躍するための2時間集中実践。|神スクール実践セミナー"> </a> <h6 class="fw-bold mb-2 mt-2" style="font-size: 0.9rem; line-height: 1.4;"> <a href="/event/1" class="text-decoration-none text-dark link-hover-color"> ハローワーク講師が伝授!未経験から「PHPエンジニア」へ飛躍するための2時間集中実践。 </a> </h6> <a href="/event/1" class="btn btn-blue text-white btn-sm w-100 rounded-pill fw-bold py-2 shadow-sm" style="font-size: 0.75rem;"> この技術を「神速」で習得する <i class="bi bi-chevron-right ms-1"></i> </a> </div> <div class="mb-4 pb-3 border-bottom last-child-border-0"> <a href="/event/2" class="d-block overflow-hidden rounded-4 mb-2 shadow-sm border"> <img src="/event/uploads/events/2/1783300531_swift2_7c5.png" class="img-fluid transition-effect" style="height:140px; object-fit:cover; width:100%;" alt="職業訓練講師が直接指導!未経験から「Pythonエンジニア」へ、実務の壁を突破する2時間集中。|神スクール実践セミナー"> </a> <h6 class="fw-bold mb-2 mt-2" style="font-size: 0.9rem; line-height: 1.4;"> <a href="/event/2" class="text-decoration-none text-dark link-hover-color"> 職業訓練講師が直接指導!未経験から「Pythonエンジニア」へ、実務の壁を突破する2時間集中。 </a> </h6> <a href="/event/2" class="btn btn-blue text-white btn-sm w-100 rounded-pill fw-bold py-2 shadow-sm" style="font-size: 0.75rem;"> この技術を「神速」で習得する <i class="bi bi-chevron-right ms-1"></i> </a> </div> <div class="text-center mt-2 border-top pt-3"> <a href="/event/" class="small text-decoration-none text-blue fw-bold"> すべての実践講座を見る <i class="bi bi-arrow-right"></i> </a> </div> </div> </div> </aside> <style> /* 視認性と信頼性を高めるスタイル設定 */ .transition-effect { transition: transform 0.5s ease; filter: brightness(98%); } .transition-effect:hover { transform: scale(1.05); filter: brightness(102%); } .last-child-border-0:last-child { border-bottom: none !important; margin-bottom: 0 !important; padding-bottom: 0 !important; } .link-hover-color:hover { color: var(--bs-primary) !important; text-decoration: underline !important; } .rounded-4 { border-radius: 1rem !important; } /* ボタンに「神スクール」らしい強さを */ .btn-blue:hover { opacity: 0.9; transform: translateY(-1px); transition: all 0.2s; } </style> </div><!-- col【サイドバー】 --> </div><!-- row --> </div><!-- container --> <!-- 【共通】共通フッター --> <!-- 広告 --> <div class="container"> <div class="text-center mt-2"></div> </div> <!-- ■ページTOPボタン --> <div id="btn-page-top" class="pt-1 mb-5 me-2" style="display:none;"> <a href="#page-top" class="btn btn-light bg-secondary text-white px-3 py-2 float-end"> <i class="bi bi-chevron-up"></i> </a> </div> <!-- ■フッター部 --> <footer class="small"> <div class="container-fluid bg-dark py-4"> <div class="row text-center d-flex justify-content-evenly"> <div class="col-12 col-lg-2 my-1"> <a href="/footer/sitemap.php" class="text-decoration-none text-white">サイトマップ</a> </div> <div class="col-12 col-lg-2 my-1"> <a href="/footer/site-operator.php" class="text-decoration-none text-white">運営者情報</a> </div> <div class="col-12 col-lg-2 my-1"> <a href="/footer/disclaimer.php" class="text-decoration-none text-white">免責事項</a> </div> <div class="col-12 col-lg-2 my-1"> <a href="/footer/privacy.php" class="text-decoration-none text-white">プライバシーポリシー</a> </div> <div class="col-12 col-lg-2 my-1"> <a href="/contact/contact.php" class="text-decoration-none text-white">お問い合わせ</a> </div> <div class="col-12 col-lg-2 my-1"> <a href="/event/" class="text-decoration-none text-white">イベントTOP</a> </div> </div> <hr class="text-white"> <div class="row text-center d-flex justify-content-start"> <div class="col-12 col-lg-12 my-1 text-white">実務10年超のPL経験とハローワーク講師の知見を凝縮したPHP・Python専門スクール。<br>プログラミング未経験から現場で通用する「本物の基礎」を、神速かつ丁寧に伝授します。</div> </div> </div> <div class="container-fluid bg-blue py-3"> <div class="text-center text-dark">Copyright © 2026 神スクール All Right</div> </div> </footer> <script> window.addEventListener('load', function () { // ページ内のすべての AdSense 広告要素を取得(ins.adsbygoogle) const ads = document.querySelectorAll('ins.adsbygoogle'); // 広告ごとに初期化処理 ads.forEach(function(ad) { // 初期化されていなければ push を実行 if (ad.getAttribute('data-adsbygoogle-status') !== 'done') { try { // AdSense 広告を初期化(push を呼び出して表示処理を開始) (adsbygoogle = window.adsbygoogle || []).push({}); } catch (e) { console.error('AdSense push error:', e); } } }); // すべての広告の初期化後、少し待ってから広告ステータスを確認 setTimeout(() => { ads.forEach(function(ad) { // 広告が「配信されなかった(空白になった)」場合の処理 if (ad.getAttribute('data-ad-status') === 'unfilled') { // 広告要素だけを非表示にする(親の div などは残す) ad.style.display = 'none'; console.log('AdSense広告が未配信のため非表示にしました:', ad); } }); }, 1000); // 1秒後にチェック(早すぎると data-ad-status がまだ付かないことがある) }); </script> </body> </html>