1

我正在使用 jQuery 插件 jquery.simpleweather 来查询特定邮政编码的 Yahoo 天气,并以 JSON 格式返回响应。返回的键之一称为“链接”,它提供到“完整预测”的链接。这过去工作得很好,但现在(大约在本月初)它提供的链接只是将用户移植到雅虎天气主页。我假设他们一定对事情的运作方式做出了某种改变。无论如何,如果我说提供 93065 的邮政编码,即“加利福尼亚州西米谷”,那么这方面的一个例子,链接将在 JSON 响应中返回,如下所示:

http://us.rd.yahoo.com/dailynews/rss/weather/Simi_Valley__CA/*http://weather.yahoo.com/forecast/USCA1060_f.html

该链接看起来很奇怪,但这就是响应中返回的内容,如果您尝试转到该链接,它只会将您带到默认的雅虎天气页面,而不是该城市的预报。

有没有办法创建我自己的链接?我试图弄清楚如何热链接到 93065 的雅虎天气页面。我可以在我的代码中构建链接。问题是它看起来并不直截了当。如果我在谷歌上搜索“yahoo weather 93065”,然后点击第一个搜索结果,链接就是这个

https://weather.yahoo.com/united-states/california/simi-valley-2493889/

问题是我不知道“2493889”是什么或如何获取该值。我希望我可以创建一个这样的链接

https://weather.yahoo.com/united-states/california/93065/

但这不起作用。当我只有邮政编码和城市名称时,我如何才能热链接到雅虎天气页面?

谢谢

4

2 回答 2

1

看起来 yahoo 的天气 API 尚未更新以匹配他们新的天气着陆。

一项非常重要的工作可能是简单地忽略数字。

https://weather.yahoo.com/united-states/california/simi-valley/

我只会这样做足够长的时间来使用另一个 API,如Open Weather Map或 Weather Underground(我会链接但没有足够的声誉来发布超过 2 个链接)。

另外需要注意的是,我在 Yahoo 的 API 论坛上进行了快速搜索,但没有看到任何关于此主题的讨论,尽管可能有一些联系人或电子邮件地址可用于告知他们 API 中的错误。

于 2015-02-12T23:01:28.997 回答
0

我有一个 hacky 的解决方法,因为 Yahoo Weather API 返回的值似乎与他们的文档不同。

无论如何,如果您知道woeid,您可以(截至 2015 年 5 月)构建一个指向预测的链接,如下所示:

// San Francisco WOEID
var woe = '2487956';
// call simpleweather
$.simpleWeather({
  woeid: woe,
  unit : 'f',
  success : function( weather ) {
    // 'parts'      array of values needed from 'weather'
    // 'link'       object to hold modified 'weather' values
    // 'forecast'   forecast link 
    var parts = ['country','region','city'],
      link = {}, 
      forecast = 'https://weather.yahoo.com/';
    // lowercase the returned values and replace spaces with dashes
    $.each( parts, function(i,v) {
      link[v] = weather[v].replace(/\s+/g,'-').toLowerCase();
    });
    // build forecast link
    forecast += link.country + '/' + link.region + '/' + link.city + '-' + woe + '/';
  },
});

我敢肯定有更有效的方法来做上述...

于 2015-04-30T18:48:12.177 回答