20232305 李冠呈 2023-2024-2 《Python程序设计》实验四报告

20232305李冠呈 2024-05-31 17:40:43

​

20232305 2023-2024-2 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 2323
姓名: 李冠呈
学号:20232305
实验教师:王志强
实验日期:2024年5月15日
必修/选修: 公选课

1.实验内容

一、实验整体内容

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。

1、编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。

2、利用公开数据集,开展图像分类、恶意软件检测等

3、利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。

4、爬取天气数据,实现自动化微信提醒

5、利用爬虫,实现自动化下载网站视频、文件等。

6、编写小游戏:坦克大战、贪吃蛇、扫雷等等

注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

二、实验内容

爬取天气数据,实现微信自动化提醒

2. 实验过程及结果

(1)首先寻找一个可以便于爬取并且便于寻找HTML的网站,同时网站还要有足够多的信息

最后找到了这个网站

https://baidu.weather.com.cn/mweather15d/401090020201.shtml
(2)然后通过查看寻找网站的HTML结构,开始编写代码

先引入实验所需的库

import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
import time
import pyautogui as pg
import pyperclip as pc

然后找到user-argent,并且解析HTML结构,爬取天气数据,并将其保存为文件


headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0',
    'Accept-Encoding': "gzip, deflate",
    'Connection': "keep-alive",
    'cache-control': "no-cache"
}

url = 'https://baidu.weather.com.cn/mweather15d/401090020201.shtml'
resp = requests.request("GET", url, headers=headers)
resp.encoding = 'utf-8'
soup = bs(resp.text, 'html.parser')


data_all = []
weather_table = soup.find("div", {"id": "listBox"})  # 根据实际HTML结构进行调整
if weather_table:
    weather_items = weather_table.find_all("li")
    for item in weather_items:
        date = item.find("p", {"class": "date"}).text.strip()
        day_of_week = item.find("p", {"class": "week"}).text.strip()
        day_weather_desc = item.find("span", class_="weatherWord").text.strip()
        day_temp = item.find("span", class_="d-temp").text.strip()
        night_weather_desc = item.find_all("span", class_="weatherWord")[1].text.strip()
        night_temp = item.find_all("span", class_="n-temp")[0].text.strip()
        wind_elem = item.find("div", class_="list-right-wind")
        wind_info = " ".join([w.text.strip() for w in wind_elem.find_all("span")])


        data_all.append([date, day_of_week, day_temp, night_temp, day_weather_desc, night_weather_desc, wind_info])


weather_df = pd.DataFrame(data_all, columns=["日期", "星期", "最高气温(℃)", "最低气温(℃)", "白天天气", "夜间天气", "风向信息"])
weather_df.to_csv("天气信息.csv", encoding="utf_8", index=False)
print("天气信息已保存到 '天气信息.csv'")

(3)实现向微信自动发送消息
​

wechat_contact = "文件传输助手"
csv_file_path = "天气信息.csv"

data = pd.read_csv(csv_file_path)
print(data)
# 打开微信并选中联系人
pg.hotkey('ctrl', 'alt', 'w') 
time.sleep(2)
pg.hotkey('ctrl', 'f')  
time.sleep(1)
pc.copy(str(wechat_contact))
pg.hotkey('ctrl', 'v')  
time.sleep(2)
pg.press('enter')  
time.sleep(1)

pc.copy(str(data))
pg.hotkey('ctrl', 'o')
time.sleep(2)
pg.hotkey('ctrl', 'v')
pg.press('enter')
time.sleep(2)

(4)实验结果

3. 实验过程中遇到的问题和解决过程

问题一:找网站时经常找到难以获得HTML共性结构的网站
解决方案:听取同学建议
问题二:不知道如何查看网站的HTML结构并将有用的信息提取出来。
解决方案:通过B站学习和gpt学会HTML作用和如何查看HTML结构并提取有用信息。
问题三:在发送信息到微信时,用pg.typewrite()函数总报错,而且不能将想要的信息写入聊天框内。
解决方案:不使用该函数,改为将需要的信息复制粘贴下来再发送。

课程感悟和思考

首先先说本次实验,开始我的构想是做一个可以实现爬取足球赛程的爬虫,实现不仅能够爬取自己想要的足球队的赛程,并且能够在开赛前发送微信提醒,在比赛结束后发送微信告知比赛结果。因为我开始想的是这个想法和天气预报并提醒的基本逻辑是一样的,所以应该只需要稍加改动应该就能实现。但实际操作时我就发现我的想法有点天真。首先很难找到有所有联赛赛程的网站,其次这些网站的HTML结构相当复杂,而且并不是以某个队的队名作为共性元素,比如如果你想查曼联的赛程,在Sofascore上不能通过队名作为共性元素,而是以赢的队伍和输的队伍,咪咕上则是以队伍的主客场来作为共性元素,这与我最开始的想法有很大不同,查找也相当麻烦。而且即使能够爬取,在我目前力所能及的范围也就能做到爬取单一的队而不是想爬哪个爬哪个,所以只能放弃。
再说说这们课程感悟,我学习这门课的初衷是受到了学长的安利,他们说这节课很有意思,老师也很有水平,有人格魅力,于是我选了这门课。在学习的过程中我逐渐发现python这门语言的强大之处,不仅极其容易上手,而且功能十分强大。如果说学习C语言两个学期也就刚刚勉强学会走,那么学python一个学期就几乎可以上场踢球了。不仅如此,pycharm的功能也是强大到夸张,感觉它自己就可以编写程序,几乎不需要我动手,而爬虫也让我感叹python的极强的实用性和极低的上手难度,只要稍微有一点基础就能在几天之内学会爬虫,写出自己的爬虫代码。这让我真切地体会到“人生苦短,我学python”

参考资料

https://www.bilibili.com/video/BV1d54y1g7db/?p=11&spm_id_from=333.880.my_history.page.click&vd_source=815264e0934c00f19365ecc9d9490b51

...全文
384 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文介绍了一个基于Java与Vue的中小银行信贷材料结构化审核与尽调要点抽取系统的设计与实现。系统通过OCR识别、版面解析、关键字段抽取、实体归一化、规则引擎和风险评分等技术,将非结构化的信贷材料(如营业执照、审计报告、银行流水、合同等)转化为可查询、可校验的结构化数据,实现材料自动分类、字段提取、完整性检查、跨文档一致性比对及风险线索识别。系统涵盖文件接入、文档识别、字段抽取、规则校验、风险评分与前端交互六大层次,提升了信贷审核效率、统一了审查标准、增强了风险预警能力,并建立了可追溯的数据资产体系。文中还提供了企业名称清洗、统一社会信用代码校验、金额抽取、材料完整性校验、名称相似度计算和风险评分等核心功能的模型描述与Java代码示例。; 适合人群:具备Java和Vue开发基础,从事金融科技、信贷系统开发或智能文档处理相关工作的研发人员,尤其是关注OCR、NLP与规则引擎在金融风控中应用的工程师和技术负责人。; 使用场景及目标:① 实现中小银行信贷材料的自动化结构化处理与智能审核;② 提升信贷审批效率,降低人工核验成本;③ 统一尽调标准,增强风险识别与预警能力;④ 构建可追溯、可审计的信贷数据资产,支持贷后管理与监管合规。; 阅读建议:此资源以实际项目为导向,结合业务需求与技术实现,建议开发者结合代码示例深入理解各模块设计逻辑,重点关注实体归一化、规则引擎配置与前后端协同机制,并可在类似场景中复用核心算法与架构设计。
鼎拨神器 4.02 软件描述 ====================== 一、软件简介 鼎拨神器是一款面向拨号场景的桌面工具软件,提供账号批量拨号、拨号状态管理、日志留痕等功能,适用于需要频繁切换拨号账号的使用场景。软件界面简洁、操作直观,账号配置与管理一体化,开箱即用。 二、核心功能 1. 账号拨号:支持多账号配置,账号与密码以"空格或 Tab 键"分隔,可从表格(一列账号、一列密码)直接复制粘贴导入,批量管理、快速切换。 2. 动态等待:拨号成功后支持 1-60 秒动态等待时长,可有效规避连续拨号过快导致的失败,提升拨号成功率。 3. 流量选项:内置流量模式选项(4.0 版本新增),按需选择,灵活适配不同拨号需求。 4. 日志留痕: - dial_log.xls:最近一次拨号记录; - dial_log_日期.txt:全部拨号记录,按天归档,方便追溯与统计。 5. 图标美化:4.02 版本窗口左上角与任务栏统一应用专属图标,界面更规范。 三、版本更新记录 - 版本 4.02:修复了一些已知问题,优化窗口图标显示。 四、目录结构说明 - 鼎拨神器.exe:主程序,双击启动。 - Launcher_ForExe.exe:拨号调度启动器。 - Program 文件夹:软件内部文件,请勿删除。 - Program\dial.exe:核心拨号组件。 - accounts.txt:账号密码配置文件(账号与密码间用一个空格或 Tab 键隔开)。如不慎删除,请以"accounts.txt"命名自建文件即可恢复使用。 - rz 文件夹:日志文件夹,自动生成拨号记录。 建议每次拨号时将最后一个账号设为自己固有的账号,避免前面所有账号拨号不成功。 详细条款请参阅软件包内《软件使用授权及免责声明》。
详情可查看下方数据集可视化效果。 【数据集概况】 · 检测类别(中文):[其他(Violence), 攀爬(climb)] · 训练集:2056 张 · 验证集:111 张 · 测试集:61 张 · 总计:2228 张 该数据集聚焦于高空作业场景中人员攀爬行为的精准识别,涵盖室内攀岩墙、户外梯子、屋顶维修、儿童游乐设施等多种真实环境。通过多角度、多光照条件下的图像采集,全面覆盖了不同高度、姿态和设备类型下的攀爬活动,为安全监控与风险预警系统提供了高质量的视觉基础,具有显著的行业应用价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 87 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9141** mAP50-95 | 0.6503 Precision | 0.8867 Recall | 0.8620 train/box_loss | 0.8021 train/cls_loss | 0.4599 val/box_loss | 1.1432 val/cls_loss | 0.6798 【训练过程分析】 87 轮训练后 mAP50 达到 0.9141,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6503,和 mAP50 差距 0.26,定位精度仍有优化空间。 【模型性能评估】 Precision 0.8867、Recall 0.8620,精度高于召回,存在一定漏检。多类检测中,不同类别性能可能有差异,需关注难例类别的表现。 【预测效果展示】 验证集预测效果较好...

110

社区成员

发帖
与我相关
我的任务
社区描述
人生苦短,我用Python!
python3.11 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧