前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2011-2021年全国各省市区县每日天气【附下载,附代码】

2011-2021年全国各省市区县每日天气【附下载,附代码】

作者头像
陈学谦
发布2021-11-04 15:51:58
1.5K0
发布2021-11-04 15:51:58
举报
文章被收录于专栏:学谦数据运营

在日常的教学中,孩子们对于直观图像的理解与认识远比公式、定义的文字来得深刻。

为了让他们更好的更直观的理解沿海地区比内陆地区的温差小,陈老师不能口说无凭,一定得拿出点让人心服口服的数据来,哪怕他们只是十几岁的孩子:

否则他们只会停留在对“比热容”公式一脸茫然的迷惑中,对“早穿皮袄午穿纱,守着火炉吃西瓜”的不解中。而一个一个的数字摆在这里,事实性远大于以上。

当然,纸上得来终觉浅,绝知此事要躬行,想要真正地感受当地的昼夜温差,恐怕也只能是自行前往体验来的真实了。

而想要获取这些往年的天气数据,却不是个容易的事情,没什么网站会让你痛痛快快地下载下来,像下面这样的网址,直接拷贝也无法成表进行分析:

所以python就要用起来。

爬取的网站是2345历史天气:北京历史天气查询_历史天气预报查询_2345天气预报

代码比较简单,因为网站没有设置反爬,所以不需要什么代理,直接上手就行,request和BeautifulSoup基本上就可以搞定

主要代码:

代码语言:javascript
复制
def get_one_month_temps_of_a_city(areaId,areaType,year,month):
    headers={
     "Host": "tianqi.2345.com",
     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv93.0) Gecko/20100101 Firefox/93.0",
     "Accept": "application/json, text/javascript, */*; q=0.01",
     "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
     "Accept-Encoding": "gzip, deflate",
     "X-Requested-With": "XMLHttpRequest",
     "Connection": "keep-alive",
     "Referer": "<http://tianqi.2345.com/wea_history/54857.htm>",
     "Cookie": "Hm_lvt_a3f2879f6b3620a363bec646b7a8bcdd=1634709998; Hm_lpvt_a3f2879f6b3620a363bec646b7a8bcdd=1634710136; lastCountyId=57516; lastCountyTime=1634710136; lastCountyPinyin=chongqing; lastProvinceId=43; lastCityId=57516"
    }
    
    url="<http://tianqi.2345.com/Pc/GetHistory>"
    query = {
       'areaInfo[areaId]':areaId,
       'areaInfo[areaType]':areaType,
       'date[year]':year,
       'date[month]':month
    }
    
    response = requests.request(
       "GET",
       url,
       params=query,
       headers=headers
    )
    a=json.loads(response.text)['data']
    soup = BeautifulSoup(a,features="lxml")
    ths=soup.find_all("th")
    bsss=soup.find_all("td")
    infos=[]
    bss_num=0
    for bss in bsss:
        info=bss.text
        #print(info)
        if bss_num % 6==0:
            info=info[0:10]
        elif bss_num % 6==1:
            if len(info)==1:
                info=''
            else:
                info=int(info[:-1])
        elif bss_num % 6==2: 
            if len(info)==1:
                info=''
            else:
                info=int(info[:-1])
        infos.append(info)
        bss_num+=1
 
    temps_list=np.array(infos).reshape(int((len(infos))/6),6)  # reshape(列的长度,行的长度)
    return temps_list
代码语言:javascript
复制


结果数据示例:

一旦有了数据,想怎么分析,那就要看分析人的思路了。比如说最近这几天我感觉比往年都要冷一些,记得去年10月底还没穿秋裤,怎么今年刚过十一我就把秋裤穿上了,难道是我最近肾虚,啊不,身体状态下降了?马上找出来近三年的十月份最高和最低气温看一下:

图中可知,今年的气温很明显比以往要低不少,因此我判断,我的肾,额,身体没问题,嗯!穿秋裤,没毛病。

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

本文分享自 PowerBI生命管理大师学谦 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档