PHPでサイトのHTMLソースを取得する
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すれば、ログインサイト内からも取得できます。
用意されているオプションが結構多いので、公式で確認して必要なものを実装してみてください。
取得したソースから特定の要素を取り出す方法は、下記の過去記事↓
- 
            前の記事記事がありません 
- 
            次の記事  PHPでウェブスクレイピング 2019.05.30
 
	
          
コメントを書く