20242208 2025-2026-2 《Python程序设计》实验4报告
20242208 2025-2026-2 《Python程序设计》实验4报告
课程:Python程序设计
班级:2422
姓名:韩岳航
学号:20242208
实验教师:王志强
实验日期:2026年6月13日
必修 / 选修:公选课
一、实验题目
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
二、实验内容
本实验基于 Python 实现一个 天气爬取 + 图形界面 + 自动化提醒系统,主要内容包括:
- 使用
requests + BeautifulSoup爬取中国天气网实时天气数据 - 使用
Tkinter构建图形化用户界面 - 支持用户自定义城市与提醒时间
- 使用
PyAutoGUI实现 PC 微信自动发送消息 - 支持 每日定时自动提醒
- 实现“输入城市 → 查询天气 → 自动发送至微信用户 cobess”
三、实验环境
| 项目 | 说明 |
|---|---|
| 操作系统 | Windows 10 / 11 |
| Python 版本 | Python 3.14 |
| 开发工具 | PyCharm |
| 主要库 | requests, bs4, tkinter, pyautogui, schedule |
四、实验过程与结果
4.1 总体设计
(1)Tkinter GUI 输入城市/时间
(2)天气爬虫模块 中国天气网
(3)微信自动化 发送给cobess(也就是发给我自己,我微信名字叫这个哈哈哈)
4.2 关键模块说明
(1)城市映射模块 city.py
CITY_CODE = {
"北京": "101010100",
"上海": "101020100",
"广州": "101280101",
"深圳": "101280601"
......
}
用户只输入城市名
程序自动转换为天气网城市代码
(2)天气爬取模块 weather.py
def get_weather(city_name):
code = CITY_CODE.get(city_name)
url = f"http://www.weather.com.cn/weather/{code}.shtml"
...
return f"🌦 {city_name} 天气\n☀️ 状况:{wea}\n🌡 温度:{temp}"
使用 HTTP 请求 + HTML 解析
提取当天天气与温度
返回格式化文本
(3)图形界面模块 main.py
使用 Tkinter 构建 GUI
支持城市输入、天气展示、定时设置
界面美观、布局清晰
(4)微信自动化模块 wechat_gui_sender.py
def send_to_cobess(text):
pyperclip.copy(text)
pyautogui.hotkey('ctrl', 'alt', 'w')
pyautogui.hotkey('ctrl', 'f')
pyautogui.write("cobess")
pyautogui.press('enter')
pyautogui.click(x=1277, y=915)
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
自动唤起微信
搜索联系人 cobess
自动发送天气信息
4.3 运行结果
-
GUI 界面正常运行

-
成功爬取天气数据

-
点击按钮即可发送天气至 cobess

-
每日定时自动提醒功能正常
4.4 运行视频
4.5上传源代码至Gitee仓库
五、实验中遇到的问题与解决方法
1. pip 命令无法识别
问题描述:
在终端中执行 pip install requests 时,报错:
解决方法:
放弃直接使用 pip,直接在pycharm中的python依赖包设置中进行安装:
2. 微信未发送消息
问题描述:
程序虽然能搜索到联系人cobess,但消息并未发送成功。
原因分析:
程序执行时,焦点仍然停留在微信搜索框中,并未切换到聊天输入框,导致粘贴内容失败。
解决方法:
在发送消息前,通过 pyautogui.click() 强制将鼠标焦点移动到聊天输入框。
六、实验分析与思考
-
爬虫稳定性
中国天气网结构简单,适合教学演示,但依赖网页结构,若改版需同步调整解析规则。 -
自动化风险
使用 PyAutoGUI 模拟操作微信存在一定风险,适合本地工具,不适合大规模部署。
七、实验总结
通过本次综合实验,我加深了对 Python 实际应用的理解,提升了独立开发与问题解决能力。
八、参考资料
-基于 Python 的网络爬虫爬取天气数据及可视化分析
-用Python爬虫抓取天气数据的保姆级教程
浙公网安备 33010602011771号