注册免费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)
运行结果:
(1)前 6 行的数据是不需要的,应该删除
(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])
运行结果:
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)
运行结果:
(1)打开 JSON在线编辑器,观察数据结构
(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)
运行结果:
本文结束!
欢迎关注公众号:Python爬虫数据分析挖掘
本文分享自 Python爬虫数据分析挖掘 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!