前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还在担心明天的天气吗?----API爬取各城市天气预报数据

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

作者头像
Python研究者
发布2020-10-29 16:52:30
1.2K0
发布2020-10-29 16:52:30
举报
文章被收录于专栏:Python研究者

需要用的链接和网址:

注册免费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: 不会的可以看这个 传送,做前两个步骤就可以。

一:获取国内城市信息

代码语言:javascript
复制
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的位置。

代码语言:javascript
复制
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])

运行结果:


三:获取JSON格式的数据

代码语言:javascript
复制
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)


运行结果:


四:解析JSON数据

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

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

代码语言:javascript
复制
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爬虫数据分析挖掘

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫数据分析挖掘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需要用的链接和网址:
  • 一:获取国内城市信息
  • 二:处理数据
  • 三:获取JSON格式的数据
  • 四:解析JSON数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档