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
コメントを書く