吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3701|回复: 36
收起左侧

[Python 转载] 有了它,你就是历史天气库

  [复制链接]
2014晴天 发表于 2021-9-27 15:41

1、需求的诞生

LD:'小X,在不?国庆去哪儿玩呀?'

小X:'玩啥玩,回家呆着去。'

LD:'也不知道天气怎么样,要不要带两(ni)件(bang)外(wo)套(kan)回(kan)去(ba)呀.'

小X:'.....'

2、摸鱼的日常

既然领导都发话了,闲着也是闲着,不如搞一搞。

作为社畜的小X它熟练的打开了52论天想来CV一下,但当他一顿操作下来,发现好像还没有的提过这种奇怪的需求

坛友古灵精怪的甲方女友们好像也并不怎么关注天气,是吧   @创造太阳   

随即创建了一个短命的小脚本,真·阅后即焚的程度(我觉得吧,这个词用的可能有点不太恰当)

3、废话说话,上代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import pandas as pd
from lxml import etree
from requests import get
from threading import Thread

# 定义请求头
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0'}

# 定义数据暂存池
data = [[]for i in range(5)]

# 无情的解析器,获取基本数据
def jiexi(u):
    date = u.xpath('div[1]/text()')[0][0:10]
    zg = u.xpath('div[2]/text()')[0]
    zd = u.xpath('div[3]/text()')[0]
    tq = u.xpath('div[4]/text()')[0]
    fs = u.xpath('div[5]/text()')[0]
    data[0].append(date)
    data[1].append(zg)
    data[2].append(zd)
    data[3].append(tq)
    data[4].append(fs)

# 残忍的构造器,给解析器下任务
def gouzao(diming,year,day):
    for y in year:
        rs = get(f'https://lishi.tianqi.com/{diming}/{y}10.html',headers=headers)
        html = etree.HTML(rs.content)
        ul = html.xpath("//ul[@class='thrui']/li")[0:day]

        thread_list = []
        for u in ul:
            t1 = Thread(target=jiexi, args=(u,))
            t1.start()
            thread_list.append(t1)

        for t in thread_list:
            t.join()

    df =pd.DataFrame(data).T
    df.columns = ['日期','最高温','最低温','天气','风速']
    return df

if __name__ == '__main__':

    # 你想查询哪些年份
    year = ['2020','2019','2018','2017','2016','2015','2014','2013','2012','2011']

    # 你想查询多少天的数据(默认1号起)
    day = 8

    # 你想查询哪儿的天气
    diqu = 'nanxian'

    # 来吧,宝贝
    df = gouzao(diqu,year,day)

    df.to_csv(r'.\weather.csv',encoding='utf-8_sig',index=False)

4、结尾的碎碎念

作为一个小数据工作者,其实拿到这部分数据还是想着做一些可视化的图表出来的,奈何不住我太懒了,就随便套了俩图,希望坛友有兴趣能够完善下展示面,共同交流学习呀。
z.png
5.png
6.png
7.png
ld.png

免费评分

参与人数 6吾爱币 +5 热心值 +5 收起 理由
wang2747 + 1 + 1 我很赞同!
wujinzhanyi + 1 + 1 热心回复!
xkw + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
辣鸡砖家 + 1 用心讨论,共获提升!
112589 + 1 + 1 我很赞同!
剑来…… + 1 + 1 楼主这代码功底666,看着太舒服了,对大佬的仰慕之情如江水般滔滔不绝

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mt324 发表于 2021-9-27 16:46
虽然但是...正常人都选择看天气预报吧
 楼主| 2014晴天 发表于 2021-9-27 16:34
huiye123 发表于 2021-9-27 16:33
我以为你写好这个界面了。正等着白嫖呢

专业CV懒着呢,哈哈哈,有工具都不想画
 楼主| 2014晴天 发表于 2021-9-27 16:20
密码是QQ号 发表于 2021-9-27 16:17
问个小问题,这个代码怎么用

嗯,改一下城市名就能用,在倒数第三行(’diqu = ’nanxian‘‘)
 楼主| 2014晴天 发表于 2021-9-27 16:00
不知道有没有愿意写个界面的,哈哈哈
987fw 发表于 2021-9-27 16:09
确实有点难搞
azusys 发表于 2021-9-27 16:13
问天气怎么样为什么要查历史天气而不是未来天气??
密码是QQ号 发表于 2021-9-27 16:17
问个小问题,这个代码怎么用
 楼主| 2014晴天 发表于 2021-9-27 16:19
azusys 发表于 2021-9-27 16:13
问天气怎么样为什么要查历史天气而不是未来天气??

哈哈哈,甲方要1,你要给10,
huiye123 发表于 2021-9-27 16:33
2014晴天 发表于 2021-9-27 16:00
不知道有没有愿意写个界面的,哈哈哈

我以为你写好这个界面了。正等着白嫖呢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表