本文へ移動
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
  • About
  • Price
  • Work
  • Blog
  • Contact
  1. ホーム
  2. Blog
  3. PHPでサイトのHTMLソースを取得する

公開日: 2019.05.30

PHPでサイトのHTMLソースを取得する

PHPでサイトのHTMLソースを取得する

目次

  • file_get_contents
  • cURL

PHPで外部サイトのHTMLを取得する定番の2つの方法をご紹介します。

  • file_get_content
  • cURL

cURLは、オプションを上手く使えばログインサイト内のHTMLも取得できるスグレモノです。

file_get_contents

こちらはとても簡単です。

<?PHP
$URL = "https://www.yahoo.co.jp"; //取得したいサイトのURL
$html_source = file_get_contents($URL);

これだけ。

だけども、たまにこれでは取得ができない場合があります。そんな時は、次の方法↓

cURL

今度は少し複雑ですが、様々なオプションを指定できたり、パフォーマンス的にも良いとか。以下のコードをそのままコピペでいけます。

<?PHP

$URL = "https://www.yahoo.co.jp"; //取得したいサイトのURL

$ch = curl_init();

//ここからオプション
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  //証明書検証しない
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //レスポンスを表示するか
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  //"Location: " ヘッダの内容をたどる
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);  //"Location: " ヘッダの内容をたどる深さ
//ここまでオプション

$output = curl_exec($ch) or die('error ' . curl_error($ch));   //cURL セッションを実行する
curl_close($ch);  //リソースを閉じ、システムリソースを解放

//日本語のための文字コード設定など
mb_language("Japanese");
$html_source = mb_convert_encoding($output, "UTF-8", "auto");

もし、そのままのコードで取得できない場合は、取得先のサイトに合わせて、オプション部分を工夫する必要があるかもしれません。ログイン情報をPOSTすれば、ログインサイト内からも取得できます。

用意されているオプションが結構多いので、公式で確認して必要なものを実装してみてください。

オプション設定一覧
https://php.net/manual/ja/function.curl-setopt.php

 

取得したソースから特定の要素を取り出す方法は、下記の過去記事↓

PHPでウェブスクレイピング他サイトから取得したHTMLソースから目的のテキストなどを取り出したい時、ソースを文字列として扱うよりもDOMとして操作すると簡単に取り出…

タグ

  • cURL
  • file_get_contents
  • html
  • PHP
  • ソース

関連記事

2021.08.01

【PHP】0埋めされていない1桁の分をDateTime::createFromFormat()に入れたらfalseを返してきた

【PHP】0埋めされていない1桁の分をDateTime::createFromFormat()に入れたらfalseを返してきた

2022.08.02

phpQueryで「Array and string offset access syntax with curly braces is deprecated」

phpQueryで「Array and string offset access syntax with curly braces is deprecated」

2019.07.10

PHPでconsole.log(JavaScript)する1番簡単な方法

PHPでconsole.log(JavaScript)する1番簡単な方法
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
YAS プロフィール画像

長野県長野市在住
WEBエンジニア YAS

LINKS

  • X
  • Instagram
  • GitHub
Design
  • スタンダード
  • 和モダン
  • エンジニア
  • 信州ナチュラル
プライバシーポリシー

@ Webstudio YAS