python爬取高德地图的某个省的天气

背景:

想要实时收集天气的数据,网上的天气API很多,但发现好像高德地图的API会比较容易使用。

认识高德地图API:

高德地图天气开放文档网址:

https://lbs.amap.com/api/webservice/guide/api/weatherinfo/#t1

api地址:

https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=<用户key>
 

参数说明:python爬取高德地图的某个省的天气_第1张图片

分析城市编码(city):

获取城市编码网址:https://lbs.amap.com/api/webservice/download

城市编码表格如下:

python爬取高德地图的某个省的天气_第2张图片

观察adcode发现,城市编码是按照身份证数字开头。假如我们需要爬取背景天气数据,可以选择11***开头的数据。

但懒得写正则,而且修改高德地图API比较麻烦,所以我选择在execl上操作,假如我们需要选取北京天气的数据,我们可以只取北京的数据,变成单独的csv文件。处理好的文件保存在本地。

编写Python代码:

编写思路:

1.打开csv文件,截取B列的数据;

2.遍历ancode的数据,得到相应城市的天气JSON数据;

3.遍历城市JSON数据,取出天气的字段。

import requests
import json
import openpyxl
aMap_adcode_data = openpyxl.load_workbook('C:/Users/Administrator/Desktop/AMap_adcode_citycode.xlsx')
ws = aMap_adcode_data.active
colB = ws['B']
for i in colB:
    url = 'http://restapi.amap.com/v3/weather/weatherInfo?key=<用户key>&city='+i.value
    return_data = requests.get(url).text
    data = json.loads(return_data)
    weather_province = data['lives']
    #print(weather_province)
    for n in weather_province:
        city = n['city']
        adcode = n['adcode']
        weather = n['weather']
        temperature = n['temperature']
        winddirection = n['winddirection']
        windpower = n['windpower']
        humidity = n['humidity']
        reporttime = n['reporttime']
        #data = json.dumps(data_dict, ensure_ascii=False)
        print(city,weather,temperature+'℃',reporttime)

注意:用户key,去高德官网上申请,而且个人的key是有调度限制的,但次数足够个人的使用。

结果如下截图:

python爬取高德地图的某个省的天气_第3张图片

 

后期分析方向:

1.可以在linux上使用crontab,设置定时任务,将数据导入到指定的数据库。

 

你可能感兴趣的:(python爬取高德地图的某个省的天气)