还在担心明天的天气吗?—-API爬取各城市天气预报数据

还在担心明天的天气吗?----API爬取各城市天气预报数据

需要用的链接和网址:

注册免费API : http://console.heweather.com

国内城市ID : http://cdn.heweather.com/china-city-list.txt

接口:https://free-api.heweather.net/s6/weather/forecast?key=xxx&location=xxx
(key后的xxx填入key,location后的xxx填写城市ID)

json编辑器: http://www.json.org.cn/tools/JSONEditorOnline/index.htm


首先,先注册一个免费的API:
不会的可以看这个 传送,做前两个步骤就可以。

一:获取国内城市信息

import requests url = 'http://cdn.heweather.com/china-city-list.txt' #国内城市ID data = requests.get(url) #获取网页数据 data.encoding = 'utf8' #数据的编码方式为utf8,否则会乱码 print(data.text) 

运行结果:
还在担心明天的天气吗?----API爬取各城市天气预报数据


二:处理数据

(1)前 6 行的数据是不需要的,应该删除
还在担心明天的天气吗?----API爬取各城市天气预报数据


(2)在接口的链接中我们发现,还需要在localtion后填入城市ID,从输出结果中可以看出,城市ID在每行的下标第2-12的位置。

import requests url = 'http://cdn.heweather.com/china-city-list.txt' #国内城市ID data = requests.get(url) #获取网页数据 data.encoding = 'utf8' #数据的编码方式为utf8,否则会乱码 data1 = data.text.split("n") #通过split将文本转换为列表 for i in range(6): #删除前6行不需要的数据 data1.remove(data1[0]) for item in data1: #找出城市ID print(item[2:13]) 

运行结果:

还在担心明天的天气吗?----API爬取各城市天气预报数据


三:获取JSON格式的数据

import requests import time url = 'http://cdn.heweather.com/china-city-list.txt' #国内城市ID data = requests.get(url) #获取网页数据 data.encoding = 'utf8' #数据的编码方式为utf8,否则会乱码 data1 = data.text.split("n") #通过split将文本转换为列表 for i in range(6): #删除前6行不需要的数据 data1.remove(data1[0]) for item in data1: #接口链接中的key后面的xxx改为自己刚刚注册的key,location后加上城市ID url = 'https://free-api.heweather.net/s6/weather/forecast?key=xxx&location=' + item[2:13] data2 = requests.get(url) data2.encoding = 'utf8' #time.sleep(1) #延时函数代码,避免访问服务器过于频繁,每次访问等待1s(这里可以不加) print(data2.text) 

运行结果:
还在担心明天的天气吗?----API爬取各城市天气预报数据


四:解析JSON数据

(1)打开 JSON在线编辑器,观察数据结构

还在担心明天的天气吗?----API爬取各城市天气预报数据

(2)通过观察路径,打印需要的信息,例如找出各城市当日的最高和最低气温

import requests import time url = 'http://cdn.heweather.com/china-city-list.txt' #国内城市ID data = requests.get(url) #获取网页数据 data.encoding = 'utf8' #数据的编码方式为utf8,否则会乱码 data1 = data.text.split("n") #通过split将文本转换为列表 for i in range(6): #删除前6行不需要的数据 data1.remove(data1[0]) for item in data1: #接口链接中的key后面的xxx改为自己刚刚注册的key,location后加上城市ID url = 'https://free-api.heweather.net/s6/weather/forecast?key=xxx&location=' + item[2:13] data2 = requests.get(url) data2.encoding = 'utf8' #time.sleep(1) #避免访问服务器过于频繁,每次访问等待1s(这里可以不加) dic = data2.json() for item in dic["HeWeather6"][0]["daily_forecast"][:1]: #[:1]只要今日天气信息 result = { '城市':dic["HeWeather6"][0]["basic"]["location"], '今日最高温度':item["tmp_max"], '今日最低温度':item["tmp_min"] } print(result) 

运行结果:

还在担心明天的天气吗?----API爬取各城市天气预报数据

本文结束!

欢迎关注公众号:Python爬虫数据分析挖掘

记录学习python的点点滴滴;

回复【开源源码】免费获取更多开源项目源码;

公众号每日更新python知识和【免费】工具;

本文已同步到【开源中国】、【腾讯云社区】、【CSDN】;

还在担心明天的天气吗?----API爬取各城市天气预报数据

原文链接:https://www.cnblogs.com/chenlove/p/14038562.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/7349

(0)
上一篇 2022年8月7日 23:24
下一篇 2022年8月8日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml