zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然PYTHON爬虫:用API爬出天气预报信息

    天气预报网址:https://id.heweather.com/,这个网站是需要注册获取一个个人认证后台密钥key的,并且每个人都有访问次数的限制,这个key就是访问API的钥匙。

     

     

     

     

     这个key现在是要自己创建的,名称自己写,key值可以不写,创建的时候会自动生成。

    接下来就是要阅读这个API文档。

     包括上面怎么创建获取这个key这个API文档也有介绍的。

     选择API这部分来阅读。

    接口地址:

     

    #获取城市列表
    import requests
    
    url = 'https://cdn.heweather.com/china-city-list.txt'
    response = requests.get(url)
    response.encoding='utf8'
    data = response.text
    data_1 = data.split('
    ')
    print(data_1)

     

    for i in range(3):
        data_1.remove(data_1[0])
    for item in data_1:
        print(item[0:11])

     获取城市ID后,下一步就是调用接口获取数据。

    #获取城市数据
    import time
    import requests
    
    url = 'https://cdn.heweather.com/china-city-list.txt'
    response = requests.get(url)
    response.encoding='utf8'
    data = response.text
    data_1 = data.split('
    ')
    for i in range(3):
        data_1.remove(data_1[0])
    for item in data_1:
        url = 'https://free-api.heweather.net/s6/weather/forecast?location='+item[1:13]+'&key=232ab5d4b88e46bcb8bd8c06d49ebf91'
        strhtml = requests.get(url)
        time.sleep(3)
        print(strhtml.text)

     可以看到数据是以json数据格式返回的。如果要将返回的数据解析出来可以使用for循环。

    可以使用JSON在线结构化的工具观察数据结构,网址:http://www.json.org.cn/tools/JSONEditorOnline/index.htm

     

     上图左边是原Json数据,右边显示的是它的保存数据的结构。

    #获取城市数据
    import os
    import time
    import requests
    
    url = 'https://cdn.heweather.com/china-city-list.txt'
    response = requests.get(url)
    response.encoding='utf8'
    data = response.text
    data_1 = data.split('
    ')
    for i in range(3):
        data_1.remove(data_1[0])
        
    temp = 1
    for item in data_1:
        url = 'https://free-api.heweather.net/s6/weather/forecast?location='+item[1:13]+'&key=232ab5d4b88e46bcb8bd8c06d49ebf91'
        strhtml = requests.get(url)
        time.sleep(3)
        dic = strhtml.json()
        if(temp>3):
            #获取风向值
            print(dic['HeWeather6'][0]['daily_forecast'][0]['wind_dir'])
            #获取最低气温
            print(dic['HeWeather6'][0]['daily_forecast'][0]['tmp_min'])
            #获取最高气温
            print(dic['HeWeather6'][0]['daily_forecast'][0]['tmp_max'])
            print('================')
        else:
            temp+=1

  • 相关阅读:
    linux下通过命令行重启服务,查看id,更改tv密码
    windows渗透相关、hideadmin工具隐藏用户账号、添加隐藏用户
    windows服务隐藏 以及进程隐藏
    nat32 winh命令远程执行难点
    anydesk命令行使用
    html页面,能用鼠标滚轮滑动,但是不能触屏滑动
    Java 全局统一异常捕获
    git 常用操作
    vue v-for强制刷新
    flutter-TextField垂直居中
  • 原文地址:https://www.cnblogs.com/tszr/p/12186529.html
Copyright © 2011-2022 走看看