0

我在使用谷歌天气 api 时遇到问题 我一直在使用这个脚本http://komunitasweb.com/2009/09/showing-the-weather-with-php-and-google-weather-api/一段时间但我早些时候得到这个错误:

警告:simplexml_load_file() [function.simplexml-load-file]: //www.google.com/ig/api?weather=bermuda:2: 解析器错误:开始和结束标签不匹配:元行 1 和 /home 中的 HEAD /webmx04/public_html/weather/widgetlive1.php 在第 3 行

警告:simplexml_load_file() [function.simplexml-load-file]: 302 在第 3 行移入 /home/webmx04/public_html/weather/widgetlive1.php

警告:simplexml_load_file() [function.simplexml-load-file]: ^ in /home/webmx04/public_html/weather/widgetlive1.php 在第 3 行

警告:simplexml_load_file() [function.simplexml-load-file]: //www.google.com/ig/api?weather=bermuda:6: 解析器错误:开始和结束标记不匹配:HEAD 行 1 和 /home 中的 HTML /webmx04/public_html/weather/widgetlive1.php 在第 3 行

警告:simplexml_load_file() [function.simplexml-load-file]:在第 3 行的 /home/webmx04/public_html/weather/widgetlive1.php

警告:simplexml_load_file() [function.simplexml-load-file]: ^ in /home/webmx04/public_html/weather/widgetlive1.php 在第 3 行

警告:simplexml_load_file() [function.simplexml-load-file]: //www.google.com/ig/api?weather=bermuda:7: 解析器错误:/home/webmx04 中标记 HTML 第 1 行中的数据过早结束/public_html/weather/widgetlive1.php 在第 3 行

警告:simplexml_load_file() [function.simplexml-load-file]:在第 3 行的 /home/webmx04/public_html/weather/widgetlive1.php

警告:simplexml_load_file() [function.simplexml-load-file]: ^ in /home/webmx04/public_html/weather/widgetlive1.php 在第 3 行

致命错误:在第 4 行的 /home/webmx04/public_html/weather/widgetlive1.php 中的非对象上调用成员函数 xpath()

谁能帮我谢谢

我的代码:

<?
$xml = simplexml_load_file('http://www.google.com/ig/api?weather=bermuda');
$information = $xml->xpath("/xml_api_reply/weather/forecast_information");
$current = $xml->xpath("/xml_api_reply/weather/current_conditions");
$forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");
?>
<html>
<head>
    <title>Google Weather API</title>
</head>
<body>
<div id="widget-wrapper"><!-- start widget-wrapper-->
 <div class="weather"><!-- start weather--> 

         <h2><a href="/section/weather" title="More on Weather" target="_top">Current Weather</a></h2>  
           <a href="/section/weather" target="_top"><img src="<?= 'http://www.rgbdahosting.com' . $current[0]->icon['data']?>" alt="More on Weather"?></a>
            <span class="condition">
          <a href="/section/weather" title="More on Weather" target="_top"><H4><?= $current[0]->temp_f['data'] ?>&deg;F</H4>

           <p><?= $current[0]->condition['data'] ?></p></a>
            </span>
        </div><!-- end weather-->

</div>  <!-- end widget-wrapper-->
</body>

4

1 回答 1

1

显然,谷歌将 Captcha 引入了他们的 Weather API。它会工作一、二或三次,但在同一服务器发出几次请求后,它会要求重现验证码。您的插件无法做到的事情。

我不知道解决这个问题的方法,所以看起来我们必须找到另一个天气 API 来使用。如果我错了,请纠正我,这会很有帮助。

缓存来自 Google Weather 的结果也可能会有所帮助。15 或 30 分钟内的 1 个请求应该是可以接受的,不是吗?

于 2012-08-08T13:30:55.393 回答