天気予報のRSSを取得する phpで

天気予報のデータが欲しい どうしたものか。

<?php
$rss = simplexml_load_file( 'https://rss-weather.yahoo.co.jp/rss/days/4410.xml' );//ヤフーRSS

$list1 = '<ul>';

$i = 0;
   foreach ($rss->channel->item as $item) {
     if($i >= 1){//ひとつだけ1行だけ取得
       break;
     }
     $list1 .= '<li><a href="';
   	$list1 .=  $item->link;
   	$list1 .= '">';
   	$list1 .=  $item->title;
   	$list1 .=  '</a></li>';


         $i++;
   }
list1 .= '</ul>';

echo $list1;











simplexml_load_fileでとってくる

サンプルhttps://blog.tama-tama.net/test/rss/

https://rss-weather.yahoo.co.jp/rss/days/4410.xmlが「Yahoo!天気 RSS 提供終了」してしまったのでその代わり

<?php

require_once "./simple_html_dom.php";//https://sourceforge.net/projects/simplehtmldom/files/からsimple_html_dom.phpダウンロード
$url = "https://weather.yahoo.co.jp/weather/jp/13/4410.html";//やふーの天気予報ページ(東京のやつ
$htmlSource = $this->getApiDataCurl($url,"html");
$html = str_get_html( $htmlSource );

$tenki_remarks1 = ($html->find(".date",0)->plaintext);//日付
$tenki_remarks2 = ($html->find(".pict",0)->plaintext);//天気
$tenki_remarks3 = ($html->find(".high",0)->plaintext);//最高気温
$tenki_remarks4 = ($html->find(".low",0)->plaintext);//最低気温


echo"$tenki_remarks1";//
echo"$tenki_remarks2";//
echo"$tenki_remarks3";//
echo"$tenki_remarks4";//


//参考URL https://blog.s-giken.net/440.html
function getApiDataCurl($url, $responseType = "html" ){

		if ( $responseType == "header" ) {
				$option = [
						CURLOPT_RETURNTRANSFER => true,   // 文字列として返す
						CURLOPT_TIMEOUT        => 3000,   // タイムアウト時間
						CURLOPT_HEADER         => true,
						CURLOPT_NOBODY         => true,
						CURLOPT_SSL_VERIFYPEER => false,  // サーバ証明書の検証をしない
				];
		} else {
				$option = [
						CURLOPT_RETURNTRANSFER => true,   // 文字列として返す
						CURLOPT_TIMEOUT        => 3000,   // タイムアウト時間
						CURLOPT_SSL_VERIFYPEER => false,  // サーバ証明書の検証をしない
						CURLOPT_USERAGENT      => USER_AGENT_TEXT,  // UserAgentを指定
				];
		}

		$ch = curl_init($url);
		curl_setopt_array($ch, $option);

		$body     = curl_exec($ch);
		$info     = curl_getinfo($ch);
		$errorNo  = curl_errno($ch);
		$errorMsg = curl_error($ch);

		// 「CURLE_OK」以外はエラーなのでエラー情報を返す
		if ($errorNo !== CURLE_OK) {
				// 詳しくエラーハンドリングしたい場合はerrorNoで確認
				// タイムアウトの場合はCURLE_OPERATION_TIMEDOUT
				return $errorNo . " : " . $errorMsg;
		}

		// 200以外のステータスコードは失敗なのでそのステータスコードを返す
		if ($info['http_code'] !== 200) {
				return $info['http_code'];
		}

		// headerのみ取得
		if($responseType == "header") {
				$responseArray = explode("\n", $body);                   // 行に分割
				$responseArray = array_map('trim', $responseArray);      // 各行にtrim()をかける
				$responseArray = array_filter($responseArray, 'strlen'); // 文字数が0の行を取り除く
				$responseArray = array_values($responseArray);           // キーを連番に振りなおす

		// HTMLの本体を取得
		} elseif($responseType == "html"){
				$responseArray = $body;

		// JSONで取得した情報を配列に変換して取得
		} else {
				$responseArray = json_decode($body, true);               // JSON を配列に変換
		}

		return $responseArray;
}



サンプル https://blog.tama-tama.net/test/tenkirss/

コメント

タイトルとURLをコピーしました