本文目录一览:
- [php网页的api使用 比如我自己的一个网页,想要使用天气网提供的api,如何得到数据,如何处理这](#php网页的api使用 比如我自己的一个网页,想要使用天气网提供的api,如何得到数据,如何处理这)
- 如何使用PHP调用API接口实现天气查询功能
- 调用百度天气的api时候跨域的问题
- 百度首页的天气预报显示用php怎么实现
- php怎么抓取天气预报?
- php怎么解析天气预报api返回的数据
php网页的api使用 比如我自己的一个网页,想要使用天气网提供的api,如何得到数据,如何处理这
接口会返回json数据,用php提供的json_decode函数可以将其转为对象或者数组,再输出即可。 可以参考我的网站
如何使用PHP调用API接口实现天气查询功能
最近在做微信公众平台测试时,想在里面子菜单上添加查询未来几天(包括今天)天气的功能,就查找了下好用的天气预报查询接口API,使用比较多的有:国家气象局天气接口、新浪天气预报接口、百度天气预报接口、google天气接口、Yahoo天气接口等等,我使用的是百度提供的免费天气查询接口API,下面与大家分享下...
- 查询方式: 百度提供的是根据纬度和城市名查询天气情况
- 接口事例:
- 接口参数说明:
- 返回结果说明:
- 示例代码:
//城市名 $city = '上海'; //获取json格式的数据 $str = file_get_contents("http://api.map.baidu.com/weather/v2/?city=".$city."&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ"); //对json格式的字符串进行编码 $arr = json_decode($str, TRUE); print_r($arr);
- 返回页面的是json编码后的数据:
Array ( [error] => 0 [status] => success [date] => 2014-03-17 [results] => Array ( [0] => Array ( [currentCity] => 上海 [weather_data] => Array ( [0] => Array ( [date] => 周一(今天, 实时:19℃) [dayPictureUrl] => [nightPictureUrl] => [weather] => 晴 [wind] => 西南风3-4级 [temperature] => 13℃ ) [1] => Array ( [date] => 周二 [dayPictureUrl] => [nightPictureUrl] => [weather] => 多云转阴 [wind] => 东北风3-4级 [temperature] => 24 ~ 9℃ ) [2] => Array ( [date] => 周三 [dayPictureUrl] => [nightPictureUrl] => [weather] => 中雨转小雨 [wind] => 东北风3-4级 [temperature] => 15 ~ 8℃ ) [3] => Array ( [date] => 周四 [dayPictureUrl] => [nightPictureUrl] => [weather] => 多云转晴 [wind] => 北风3-4级 [temperature] => 14 ~ 6℃ ) ) ) ) )
- PHP中自带了处理json格式字符串的内置函数,下面做一个事例,并给出完整代码:
<?php //城市名 $city = '上海'; //获取json格式的数据 $str = file_get_contents("http://api.map.baidu.com/weather/v2/?city=".$city."&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ"); //对json格式的字符串进行编码 $arr = json_decode($str, TRUE); echo "城市:".$arr['results'][0]['currentCity']." 日期:".$arr['date']."<br /><br />"; foreach($arr['results'][0]['weather_data'] as $val) { echo $val['date']."<br/>"; echo "天气:{$val['weather']}<br/>"; echo "风向:{$val['wind']}<br/>"; echo "温度:{$val['temperature']}<br/><br />"; } ?>
- 返回的内容如下:
调用百度天气的api时候跨域的问题
同源的问题,目前网上没有很好的解决百度天气api的方案。个人目前实行的方式是,先将api数据通过file_get_contents获取JSON字符串,然后再用ajax调用.php函数file_get_contents应对百度天气接口。
百度首页的天气预报显示用php怎么实现
方式一:你可以去气象局的网站使用php(python)爬虫抓取网页HTML内容提取其中的信息即可。 方式二:气象局的网站一般提供了免费的API接口,可以得到一个封装好的JSON数据包,拆开就能得到很多信息。
php怎么抓取天气预报?
可以借由php的api或者preg_match_all偷偷撷取去达成目的。 这里给你一段我给台湾朋友写的源码:
<?php
header("Content-Type: text/html; charset=utf-8");
function getWeather($city){
$toURL = "http://www.cwb.gov.tw/".$city.".htm";
$post = array();
$ch = curl_init();
$options = array(
CURLOPT_REFERER => '',
CURLOPT_URL => $toURL,
CURLOPT_VERBOSE => 0,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT => "Mozilla/4.0 (compatible;)",
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($post),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
//连接中央气象局
echo '<pre>';
preg_match_all('/<table class="FcstBoxTable01"[^>]*>(.*)<\/table>/si', $result, $matches, PREG_SET_ORDER);
preg_match_all('/<td nowrap="nowrap"[^>]*>(.*)<\/td>/si', $matches[0][1], $m1, PREG_SET_ORDER);
$m2 = explode('</td>', $m1[0][1]);
$weather = array();
for($i=0; $i <= 6; $i++){
preg_match_all('/src=[^"]*"[^>]*>(.*)</si', $m2[$i], $m5, PREG_SET_ORDER);
$m6 = explode('"', $m5[0][0]);
$wi = str_replace(array("../.."), array(""), $m6[1]);
$wtitle = strip_tags($m6[3]);
$weather[$i]['date'] = date("m-d", mktime(0, 0, 0, date("m"), date("d")+$i, date("Y")));
$weather[$i]['temperature'] = trim(strip_tags($m2[$i]));
$weather[$i]['title'] = $wtitle;
$weather[$i]['img'] = $wi;
}
return $weather;
}
$weather = getWeather("Taipei_City");
print_r($weather);
?>
说明:
$toURL
是读取资料的网址。preg_match_all()
用于截取网页中的表格数据。explode()
用于分割每日的天气数据。preg_match_all('/src=[^"]*"[^>]*>(.*)</si', $m2[$i], $m5, PREG_SET_ORDER)
用于获取天气图档。- 最后返回包含日期、温度、天气标题、图片等信息的数组。
php怎么解析天气预报api返回的数据
json就要用json的形式返回,就像ajax返回数据一样。它的返回值是true,就是正确的。如果是返回ajax的话,先判断data为真,就直接用data.XX
(字段名)就可以取出来了。