免费的天气api
网络上可以找到许多免费获取天气信息的api,大多是遵循着以下流程:
获取城市编号->获得该城市的天气信息
获取的数据一般是json格式。
这里推荐一个API接口:
# YOUR_CITY参数可以为拼音,也可以为urlencode后的中文
http://hao.weidunewtab.com/tianqi/city.php?city=YOUR_CITY
和
http://hao.weidunewtab.com/myapp/weather/data/index.php?cityID=CITY_ID
分别是获取城市编号接口和获取天气信息接口。
这两个接口的速度和稳定性都不错,推荐使用。
返回结果的编码
在用python通过这个api获取到json格式的天气数据后,发现某些城市的数据解释不了。
用repr()函数打印返回结果,发现部分城市(例如广州)的数据的头部多了3个字节:\xef\xbb\xbf。这是什么呢?
google了一番,原来这个是BOM。返回结果是一个”UTF-8+BOM”。这三个字节头表明数据是以utf-8编码的。
那么怎么兼容这种情况呢?又google了一番。找到了如下解决方案:
re = re.decode('utf-8-sig')
无论是否带BOM,结果都为不带BOM的str。