双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

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

20232305李冠呈 20232305李冠呈 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

​

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

...全文

相关推荐

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?

BIZKEEN

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 CSDN 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 CSDN 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 CSDN 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 CSDN 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

fl176831

高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 CSDN 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 CSDN 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 CSDN 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 CSDN 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

fl176831

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

lkq550

光伏板太阳能板尘土灰尘脏污检测数据集VOC+YOLO格式1006张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 CSDN 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 CSDN 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 CSDN 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 CSDN 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

fl176831
评论
收藏 已收藏
分享
返回顶部