Home >  > Darksky API之Python开发

Darksky API之Python开发

0

Darksky官方提供的接口返回的json数据一目了然。

Snap18203

点击向下的那个箭头还可以将下面的内容收缩起来。

我试着自己进行取数,非常容易就取到了。

import urllib2
import json

req = urllib2.Request('https://api.darksky.net/forecast/4731c5bca1bc15e6f0738a8d0bc13665/37.8267,-122.4233')
response = urllib2.urlopen(req)
f = json.loads(response.read())

print f['currently']['summary']
print f['currently']['icon']

效果如下:
Snap18205

另外,已经有人开发了API Libraries,利用这个取数就更方便了,现在python版本的有:

ForcastIO Python 3的使用举例

1、安装ForcastIO Python 3

下载ForcastIO Python 3,解压缩到Anaconda的安装目录下面,然后进入这个目录,执行python setup.py install命令安装。

2、使用ForcastIO Python 3

新建一个py文件,输入以下代码:

from forecastiopy import *

Lisbon = [38.7252993, -9.1500364]
fio = ForecastIO.ForecastIO('Your API Key', latitude=Lisbon[0], longitude=Lisbon[1])
current = FIOCurrently.FIOCurrently(fio)
print('Temperature:', current.temperature)
print('Precipitation Probability:', current.precipProbability)

查看执行结果:
Snap18269

3、获得未来几天的天气

from forecastiopy import *

apikey = 'Your API Key'

Lisbon = [38.7252993, -9.1500364]

fio = ForecastIO.ForecastIO(apikey,
                            units=ForecastIO.ForecastIO.UNITS_SI,
                            lang=ForecastIO.ForecastIO.LANG_ENGLISH,
                            latitude=Lisbon[0], longitude=Lisbon[1])

print('Latitude', fio.latitude, 'Longitude', fio.longitude)
print('Timezone', fio.timezone, 'Offset', fio.offset)
print(fio.get_url()) # You might want to see the request url

if fio.has_daily() is True:
	daily = FIODaily.FIODaily(fio)
	print('Daily')
	print('Summary:', daily.summary)
	print('Icon:', daily.icon)

	for day in range(0, daily.days()):
		print('Day', day+1)
		for item in daily.get_day(day).keys():
			print(item + ' : ' + str(daily.get_day(day)[item]))
		# Or access attributes directly for a given minute.
		# daily.day_7_time would also work
		print(daily.day_5_time)
else:
	print('No Daily data')

运行结果
Snap18271

4、呈现在网页中

在views.py中加入以下代码:

from forecastiopy import *

将about_me函数改成如下形式(不知是什么原因,之前一直没有显示,加上了x = fio.timezone这句才显示)

def about_me(request) :
    apikey = '4731c5bca1bc15e6f0738a8d0bc13665'

    Lisbon = [38.7252993, -9.1500364]

    fio = ForecastIO.ForecastIO(apikey,
                                units=ForecastIO.ForecastIO.UNITS_SI,
                                lang=ForecastIO.ForecastIO.LANG_ENGLISH,
                                latitude=Lisbon[0], longitude=Lisbon[1])
    x = fio.timezone
    y = fio.get_url()
    return render(request, 'aboutme.html',{'x':x,'y':y})

然后再修改aboutme.html模板文件
Snap18276

最终成果图:
Snap18277

本文暂无标签

发表评论

*

*