使用 ChatGPT 帮助小学生编程入门系列之一:Python 编程读取和解析天气预报网页上的数据

简介: 使用 ChatGPT 帮助小学生编程入门系列之一:Python 编程读取和解析天气预报网页上的数据

现在国内小学生也开设了信息技术课,课程内容也涉及到了一些简单的编程实践,比如 Scratch 和 Python.


当初这个公众号申请时专门用了我儿子的名字,算是抢注吧,毕竟微信公众号和其他社交媒体平台不一样,不允许重名。


我也曾经和我儿子聊过,我今年都 40 多岁了,这个公众号将来迟早有一天会正式交给他去运营。


本文算是本公众号利用 ChatGPT 辅助小学生进行编程入门的系列教程的第一篇,目标读者是我儿子和他的同学们。当然,也同样欢迎广大没有太多编程基础,但是又想动手尝试,想使用编程来提高自己日常工作和生活效率的成年朋友们阅读和留言。


本系列面向实战,每篇文章通过编程实现一个实际需求。


本文实现的需求:使用 Python 编写一个程序,爬取某天气预报网页上指定的天气数据。


下面我们开始动手实战。


步骤1:用 Chrome 打开 Bing 搜索引擎,根据关键字天气预报进行搜索,看到下面的结果列表。在网页上看到这个被嵌入在 Bing 搜索结果的上海浦东新区的天气预报结果,但是点击右键之后,无法在新的浏览器窗口打开这个网页。


03f10b80b807c256cea6c3e80afe2f12.png


这不要紧,按 F12 打开 Chrome 开发者工具。选中 Elements 面板,然后单击天气预报页面,即可在 Elements 面板里,看到这个上海浦东新区的天气预报结果的 url,如下图所示:


fd15fc6b18a0b1683e96a5cc892e9120.png

把它保存下来,新开一个浏览器窗口,地址栏输入进去,自动重定向成:https://www.msn.cn/zh-cn/weather/forecast/in-上海市,浦东新区


3a2ac41352a0b6816b7037f1d6db4f59.png


把这个 url 记录下来。现在我们已经有了使用 Python 进行数据爬取的网页 url 了,下一步就可以开始编写 Python 代码了。


步骤2:本步骤的目标是,完成使用 Python 将指定 url 的网页源代码,全部爬取到本地的任务。


小朋友们需要让爸爸妈妈首先完成 Python 开发环境的搭建,和 ChatGPT 账号的申请。


向 ChatGPT 发出指令:


你是一个 Python 编程专家,现在有一个网址为 www.xxx.com 的网页,请你使用 Python 读取这个网页的源代码,将其存储在一个 Python 变量并且打印出来。


得到 ChatGPT 解答:


37c44da1201675b1f15873cf24283b11.png


需求很直接,ChatGPT 给出的代码质量也很高,直接拿来就能用。把代码粘贴到一个新建的 1.py 文件里,执行命令行 python 1.py


5cb5d5203c01ad1f5ebce077da1697d6.png


收到提示:


ModuleNotFoundError: No module named ‘requests’


ChatGPT 已经针对这个错误做过提醒了,需要先执行命令行 pip install requests 安装名叫 requests 的工具库。


1d74aded737dbe0bbbf8eaa329426c96.png


安装完毕之后重新执行 python 1.py 命令行,能看到 Python 代码调用 requests 工具库,从网络上读取的网页源代码,并打印到控制台上。第二步骤也顺利完成。


e64d4a6fb2b18a2f2eaef9b0fe088563.png


步骤3:在网页上定位到需要解析的天气预报信息。


假设我们需要在 Python 代码里,打印出 今天大部分地区天气晴朗,最低气温 20这个字段的值,我们打开 Chrome,选择 Elements 面板,然后单击网页这个字段,即可在 Elements 面板里查询到对应的 HTML 源代码实现,发现这个字段通过一个赋予了 summaryDescCompact-E1_1 class 的 p 元素实现。这里又可以顺便让小朋友积累两个词汇:classify 和 classification.


b8367704922a2165bc2894010afc8fe8.png

现在我们已经明确了下一步需要实现的目标:在 HTML 源代码里,找到 class 为 summaryDescCompact-E1_1 的 p 元素,并打印出来。


向 ChatGPT 发起指令:


你是一个 Python 编程专家,现在你已经用 python 代码将网页的源代码读取到了本地,存储在字符串变量 result 里。现在你想解析出一个 p 元素的值,这个 p 元素有一个 class,值为 summaryDescCompact-E1_1,请你编写 Python 代码,将这个特殊的 p 元素的值解析并打印出来。


ChatGPT 给出的结果:

d469bb22100e4df8688de7672a9193bd.png


这段代码首先使用 BeautifulSoup 解析 HTML 字符串,然后使用 find_all 方法找到所有 class 为 “summaryDescCompact-E1_1” 的 p 元素。最后,对每个找到的元素,使用 get_text 方法提取并打印其文本内容。


ChatGPT 给出的代码仍然质量非常高,粘贴进 1.py,直接就可以运行。


python 1.py 命令行执行完后,能打印出网页上看到的这个字段值了:

d21fd78e6b1a9c15bb22e4ff892a3ad7.png

再试试另一个字段,把这个 22°C 打印出来:


94a1375a607f2a35b21381aac4ec3fed.png


使用同样的办法,定位到这个字段在网页源代码中的位置:


716f9460681706d32cf1c3982fb8892c.png


再次找 ChatGPT 帮忙:


你是一个 Python 编程专家,现在你已经用 python 代码将网页的源代码读取到了本地,存储在字符串变量 result 里。现在你想解析出一个 a 元素的值,这个 p 元素有两个 class,值分别为 summaryTemperatureCompact-E1_1 和 summaryTemperatureHover-E1_1,请你编写 Python 代码,将这个特殊的 a 元素的 title 属性值解析并打印出来。


不知疲倦的 ChatGPT 给了解答:


cea8990ecb8c8cdfa4c44230b34f404e.png


我原封不动地照搬到了 1.py 里,程序运行,完美获得了结果。


9ac3c1527e1d9a8c2282e489187a3f41.png


完整的 19 行代码如下,没有一行是我手动编写的,全部抄自 ChatGPT.


b8928f876131c9c4d7deea34c64278d0.png


接下来根据小朋友的学习掌握情况,可以让他照着本文的套路,去打印天气预报网站上一些其他的字段值。如果对代码具体的语法感兴趣,也可以让 ChatGPT 详细解释,比如:


你是一个 Python 编程专家,请你将下面这段代码的含义,逐行解释。注意你的听众是小学一年级的学生,没有任何编程基础,所以你要用一年级学生能够看懂的词汇来解释。可以结合现实生活举一些实际例子。


ChatGPT 的回复,把编程类比成一个寻宝游戏,这回答还是比较有童趣的。


6e938c09236d3d0086926c39552d47cc.png


总之,我认为 ChatGPT 等 AIGC 工具的出现,进一步降低了编程的门槛。对于仅仅把编程当成爱好的一般人来说,编程的目的无非就是使用程序解决生活中的实际问题。ChatGPT 的出现,能更好地帮助我们达成这个目标。


对于计算机行业从业者来说,在 AIGC 时代,我们也要深度思考,当越来越多的普通人都能够熟练使用编程工具之后,计算机专业从业人员的核心竞争力到底是什么?

相关文章
|
5天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
13 0
|
1天前
|
数据采集 关系型数据库 BI
Python路面平整度检测车辆数据——速度修正
Python路面平整度检测车辆数据——速度修正
|
3天前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
14 0
|
4天前
|
JSON 数据挖掘 数据库
Python复合型数据避坑指南
Python复合型数据避坑指南
13 3
|
5天前
|
机器学习/深度学习 数据采集 算法
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
10 1
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
|
5天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
13天前
yolo-world 源码解析(六)(2)
yolo-world 源码解析(六)
42 0
|
13天前
yolo-world 源码解析(六)(1)
yolo-world 源码解析(六)
42 0
|
13天前
yolo-world 源码解析(五)(4)
yolo-world 源码解析(五)
46 0
|
13天前
yolo-world 源码解析(五)(1)
yolo-world 源码解析(五)
61 0