雅虎天气API WOEID检索

29

我正在创建一款应用程序(PHP),该应用从免费的Yahoo天气RSS提取数据,并与从RSS源检索到的数据相关联,根据颜色十六进制值进行关联。我的问题是如何在不手动操作的情况下获取位置代码或WOEID。

只要提供WOEID,Yahoo的API就会返回一个RSS源-> http://weather.yahooapis.com/forecastrss?w=4097

有没有道德的方法?我初学者的知识告诉我必须编写一个脚本来搜索Yahoo并抓取第一个WOEID,但我认为Yahoo不希望脚本这样做,而且似乎过于复杂... 如果没有,是否有任何替代的API可以让我更轻松地完成此任务?

谢谢!


1
对于在2013年偶然发现这个问题的任何人:Yahoo!停用了WOEID API。我们在这里发布了相关信息:http://soup.metwit.com/post/47181933854/an-alternative-to-yahoo-weather-api - Davide R.
3个回答

64

为什么不直接使用Yahoo!GeoPlanet服务将地点解析到WOEID?或者使用YQL服务通过它的表格访问GeoPlanet?

http://where.yahooapis.com/v1/places.q('Barrie CA')?appid=[yourappidhere]
或者
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22Barrie%20CA%22&format=xml

无需进行网络爬虫。

祝好

G

(声明:我为雅虎工作,是 WOEID 和 GeoPlanet 团队的一员)


2
谢谢Vicchi!你们做得非常好,让像我这样的初学者能够轻松学习! - askon
2
哇塞,这个答案真是太棒了。正是我所需要的。 - Drenai
我获得了国家的ID,但是城镇在哪张表中? - lolalola
@Gary,我该如何使用我的客户端ID/密钥在Yahoo YQL上进行签名查询请求?我在互联网上找不到任何雅虎官方文件的迹象。 - Choxx
嗨,Gary, 我正在使用雅虎天气API('https://weather-ydn-yql.media.yahoo.com/forecastrss?location = delhi&format = json')获取天气信息,但现在我想获取多个城市的天气信息,我该怎么做。 - Abhishek
显示剩余4条评论

5

我从以下网址中获得了一些有用的信息:

http://developer.yahoo.com/geo/geoplanet/

还有:

http://developer.yahoo.com/geo/geoplanet/guide/api-reference.html#api-countries
  1. 查找重要地标的WOEID: http://where.yahooapis.com/v1/places.q('sydney%20opera%20house')?appid=[yourappidhere]

  2. 将WOEID解析为位置: http://where.yahooapis.com/v1/place/2507854?appid=[yourappidhere]

  3. 查找特定位置的WOEID: http://where.yahooapis.com/v1/places.q('northfield%20mn%20usa')?appid=[yourappidhere]

  4. 获取与给定位置匹配的WOEID范围,按最可能顺序排列: http://where.yahooapis.com/v1/places.q('springfield');start=0;count=5?appid=[yourappidhere]

  5. 查找给定WOEID的父级(并返回详细记录): http://where.yahooapis.com/v1/place/638242/parent?select=long&appid=[yourappidhere]

  6. 以特定语言(如果存在)返回给定WOEID的地名: http://where.yahooapis.com/v1/places.q('usa')?lang=fr&appid=[yourappidhere]

  7. 以JSON格式获取位置的表示形式: http://where.yahooapis.com/v1/place/2487956?format=json&appid=[yourappidhere]

  8. 获取与特定WOEID相邻的地理位置列表: http://where.yahooapis.com/v1/place/12795711/neighbors?appid=[yourappidhere]


1
雅虎地理技术很高兴宣布,在YQL中提供了PlaceFinder支持。geo.placefinder表允许用户通过YQL查询向PlaceFinder发出请求。新表提供了多种不同的访问PlaceFinder的方式。可以使用http://query.yahooapis.com/v1/public/yql?q...&appid=test检索有关受支持的请求和参数的描述。以下是一些示例:
使用自由格式输入编码街道地址(华盛顿特区宾夕法尼亚大道1600号):
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%221600%20Pennsylvania%20Ave%2C%20Washington%2C%20DC%22&appid=test

使用多行输入格式对街道地址(701 First Ave, Sunnyvale, CA 94089)进行地理编码:
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20line1%3D%22701%20First%20Ave%22%20and%20line2%3D%22Sunnyvale%2C%20CA%2094089%22&appid=test

对机场代码进行地理编码(SFO):

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%22sfo%22&appid=test

在法语中对兴趣点(POI)进行地理编码:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%22Eiffel%20Tower%22%20and%20lang%3D%22fr%22&appid=test

使用地理坐标进行反向地理编码:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%2237.416275%2C%20-122.025092%22%20and%20gflags%3D%22R%22&appid=test

使用解析的输入格式对街道地址(701 First Ave, Sunnyvale, CA 94089)进行地理编码:
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20house%3D%22701%22%20and%20street%3D%22First%20Ave%22%20and%20city%3D%22Sunnyvale%22%20and%20state%3D%22CA%22%20and%20postal%3D%2294089%22&appid=test

确定地址最近的十字路口和时区:

http://query.yahooapis.com/v1/public/yql?q=select%20line1%2C%20line2%2C%20line3%2C%20line4%2C%20cross%2C%20timezone%20from%20geo.placefinder%20where%20text%3D%22701%20First%20Ave%2C%20Sunnyvale%2C%20CA%22%20and%20flags%3D%22T%22%20and%20gflags%3D%22C%22&appid=test

这个例子展示了YQL选择响应中指定字段的能力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接