当前位置:首页>python>自学编程第57课(下):python把采集、存储、画图、推送、定时全部串起来,做一个真正自动运行的小工具

自学编程第57课(下):python把采集、存储、画图、推送、定时全部串起来,做一个真正自动运行的小工具

  • 2026-10-11 06:35:19
自学编程第57课(下):python把采集、存储、画图、推送、定时全部串起来,做一个真正自动运行的小工具

点击蓝字 关注我们

前面学会了微信推送,Tyree在手机上收到了测试消息。他说:“消息是收到了,但数据是过时的。能不能把真实天气数据直接推过来?”

上一课是单独学推送功能,这一课要把之前学的所有技能全部串起来——爬虫、存CSV、画图、推送、定时,做成一个每天早上自动运行的完整工具。

如果上集是单个零件,那么下集就是把零件组装成机器。

1

整体结构

我们的最终目标是每天早上7:30自动完成以下动作:

1. 爬取当天天气数据(第51课)

2. 追加到CSV文件(第53课)

3. 生成温度趋势图(第54课)

4. 推送到微信(第57课上)

5. 以上全部自动执行,无需手动操作(第55课)

把每个功能写成一个函数,然后依次调用。

2

脚本结构说明

整个脚本代码由六个功能模块组成,依次是:

第一个模块:采集天气

fetch_weather() 负责从 wttr.in 获取当天的天气数据。它发一个请求,把返回的 JSON 解析成字典,取出温度、湿度、天气状况三个字段。如果请求失败或数据异常,返回 None。

第二个模块:存到CSV

save_weather(data) 把采集到的数据追加到 weather_history.csv。文件不存在时自动创建并写入表头,存在时追加一行新数据。每天的日期由程序自动生成,不需要手动输入。

第三个模块:画趋势图

plot_weather() 从CSV读取历史温度数据,画出折线图,保存为 weather.png。如果数据少于两条,画图没有意义,直接跳过。

第四个模块:微信推送

send_push(title, content) 把标题和内容发送到PushPlus,返回是否成功。push_weather(weather) 把天气数据组装成推送内容,调用 send_push 发送。

第五个模块:主流程

main() 把上述四个模块串联起来:采集 → 存表 → 画图 → 推送。每完成一步打印一条日志,方便追踪执行情况。

第六个模块:定时启动

脚本被直接运行时,先执行一次 main() 做测试,然后设置每天早上7:30自动执行,进入等待循环。

这六个模块按顺序写在一起,就是完整的脚本。

下面开始分段写。

3

采集天气+存csv的脚本代码

下面我们先把采集天气与存csv的代码写出来,前面学过的,下面来看载图

与

上面截图就是采集天气与保存CSV的代码,接下来我们来画图。

4

画趋势图的脚本代码

画趋势图的代码我们前面也写过,具体的课程也可返回看54课,下面是代码截图

整个代码还没有整合完,下面还有微信推送,主流程和定时任务。下面就把这几个代码合在一起,代码行数有点多哦。

5

微信推送,主流程和定时任务的脚本代码

下面我们来把微信推送,主流程和定时任务结合起来,代码如下图

至此,我们就可以把上面的全部代码合在一起,组合成一个完整的脚本了,注意要换成自己的Token。

6

代码解释

下面我们一起来看看上面脚本中的一些重要代码的解释,其实前面都有讲解过,我们再温习一遍

`fetch_weather()`:爬取北京天气,返回包含温度、湿度、天气状况的字典。

`save_weather(data)`:把天气数据追加到CSV文件,文件不存在时自动创建并写入表头。

`plot_weather()`:读取CSV数据,生成温度趋势图并保存为 `weather.png`。

`send_push(title, content)`:通过PushPlus把消息推送到微信,返回是否成功。

`push_weather(weather)`:把天气数据组装成推送内容,调用 `send_push`。

`count_records()`:统计CSV文件中的数据条数,用于在推送内容中显示“已连续记录X天”。

`main()`:主流程,依次调用采集、存储、画图、推送。

`schedule.every().day.at("07:30").do(main)`:每天早上7:30自动执行主流程。

首次运行会立即执行一次用于测试,之后进入定时等待状态。

7

课后小挑战

挑战1:把城市改成你所在的城市,修改 `fetch_weather` 中的 `Beijing` 参数。

挑战2:在推送内容中增加一句简单的穿衣建议(比如温度>30℃时提示“建议穿短袖”)。

8

今天学到了什么

- 把所有功能模块整合成一个完整脚本

- 用 `schedule` 实现每日定时运行

- 一次运行完成“采集→存表→画图→推送”全流程

好了到这里,天气推送工具的完整链条已经搭建完毕。每天程序自动跑一遍,你起床时微信上已经有了当天的天气数据。

下节课会有惊喜,敬请期待!

————热门推荐————

自学编程第40课:打包游戏成exe文件——发给朋友

自学编程第46课:Python写段代码让麦克风实时语音识别

少儿自学编程第45课:——从音频文件识别语音

自学编程第36课:太空避障——完整游戏设计与难度平衡

自学编程第7课:turtle画图入门画正方形五角形三角形

自学编程第6课:列表+循环+判断做一个学生成绩分析器

自学编程第51课:爬虫入门让Python帮你从网页“拿”数据

自学编程第一步:安装Python和Thonny 零基础图文教程

本系列教程持续更新,欢迎关注收藏

图‖文 宝月小鹿 转载须标明出处

点赞

收藏

分享

最新文章

随机文章