php读取百度天气api(php天气预报)

发布时间:2022-11-13

本文目录一览:

  1. [php网页的api使用 比如我自己的一个网页,想要使用天气网提供的api,如何得到数据,如何处理这](#php网页的api使用 比如我自己的一个网页,想要使用天气网提供的api,如何得到数据,如何处理这)
  2. 如何使用PHP调用API接口实现天气查询功能
  3. 调用百度天气的api时候跨域的问题
  4. 百度首页的天气预报显示用php怎么实现
  5. php怎么抓取天气预报?
  6. php怎么解析天气预报api返回的数据

php网页的api使用 比如我自己的一个网页,想要使用天气网提供的api,如何得到数据,如何处理这

接口会返回json数据,用php提供的json_decode函数可以将其转为对象或者数组,再输出即可。 可以参考我的网站

如何使用PHP调用API接口实现天气查询功能

最近在做微信公众平台测试时,想在里面子菜单上添加查询未来几天(包括今天)天气的功能,就查找了下好用的天气预报查询接口API,使用比较多的有:国家气象局天气接口、新浪天气预报接口、百度天气预报接口、google天气接口、Yahoo天气接口等等,我使用的是百度提供的免费天气查询接口API,下面与大家分享下...

  1. 查询方式: 百度提供的是根据纬度和城市名查询天气情况
  2. 接口事例
  3. 接口参数说明
  4. 返回结果说明
  5. 示例代码:
    //城市名
    $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);
    
  6. 返回页面的是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℃
                                    )
                            )
                    )
            )
    )
    
  7. 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 />";
    }
    ?>
    
  8. 返回的内容如下

调用百度天气的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(字段名)就可以取出来了。