20224204 实验四《Python程序设计入门》实验报告

予星河 2023-05-25 23:38:47

20224204-2023-5 《Python程序设计入门》实验四报告

课程:《Python程序设计入门》
班级: 2242
姓名: AWL
学号:20224204
实验教师:WZQ
实验日期:2023年5月25日
必修/选修: 专选课

1.实验内容

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等

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

2. 实验过程及结果

1.实验分析
互联网时代下,数据的重要性与日俱增。爬虫技术常应用于搜索引擎、数据采集、广告过滤、大数据分析等领域,可以及时获取海量数据,提高工作效率。例如在党政机关中也可利用爬虫技术,广泛集中民意,了解民生所需,更好做出宏观决策。在这里设计实验,通过爬取哔哩哔哩网页视频弹幕,并制作词云,了解观众的核心观点与想法,利于视频制作者进一步优化视频内容,调整制作方向,提高视频质量。

2.设计
1)这里使用到的有之前学过的:爬虫技术,发送网页请求,正则表达式,jiaba分词等。
2)先利用爬虫技术,对网页发送请求,获取弹幕数据,保存为“弹幕.txt”文本;后读取文本,使用jieba分词,将文本由列表转换为字符串,利用词云库最终生成词云图。

3.实现过程
因为对相关编码的不熟悉,本次实验在哔哩哔哩平台上寻找教学视频后,自学编写完成的。
1)爬虫环节:安装requests库,输入浏览器url网址与headers请求头,发送请求并接受弹幕数据后储存数据。

img

img


2.词云制作环节:安装jieba、wordcloud、imageio库,读取弹幕数据,分词后配置词云图的相关数据(长、宽、高、背景颜色、背景轮廓、字体),生成图形。

img

img

4.结果
1)爬虫结果:

img


2)词云制作:

img

3)运行视频
CSDN上传视频失败,故将第四次实验报告程序运行视频上传至B站,经由链接查看。
https://www.bilibili.com/video/BV1oh4y1x76V/?vd_source=4e6d401bdb8a49480c57fab57c53b2f5
4)源代码
1)爬取数据

import requests
import re
url='https://api.bilibili.com/x/v1/dm/list.so?oid=55869377'
#浏览器基本身份标识
#headers 请求头 字典数据类型
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.50'
}
response=requests.get(url=url,headers=headers)#发送请求,并接收数据
response.encoding=response.apparent_encoding
print(response.text)
data_list=re.findall('<d p=".*?">(.*?)</d>',response.text)#.*?是正则表达式的元字符 可以匹配任意字符(除\n之外)
for index in data_list:
    with open('弹幕.txt',mode='a',encoding='utf-8')as f:#mode保存方式,encoding编码
        f.write(index)
        f.write('\n')#换行
    print(index)

2)制作词云图

import jieba
import wordcloud
import imageio#读取本地图片,修改词云图形
from imageio import imread
img = imageio.imread("xx.png")
#1.读取弹幕数据
f = open('弹幕.txt',encoding='utf-8')
text = f.read()
#2.分词
text_list = jieba.lcut(text)
print(text_list)

#列表转成字符串
text_str=''.join(text_list)
print(text_str)
#词云图配置
wc=wordcloud.WordCloud(
    width=500,
    height=500,
    background_color='white',
    mask=img,
    font_path='msyh.ttc'#字体文件
)
wc.generate(text_str)
wc.to_file('词云4.png')

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

  • 问题1:采集到海量数据后如何整理与保存
  • 问题1解决方案:使用正则表达式中的 “.*?”,表示非贪心算法,每个元素直接对应原来文本中不同的位置匹配的项。可以提取出数据中的中文字幕。
  • 问题2:已经安装好imageio库,但imageio.imread中imread仍然被被弃用,导致词云图形指令未运行
  • 问题2解决方案:(未解决) /(ㄒoㄒ)/

    img

  • 感想:使用爬虫可以大大提高数据提取效率,词云图通过字体的大小可直观生动展现出不同弹幕出现的频率与更多观众的观点,可在日后其他工作中加以应用。

    4.对《Python程序设计入门》课程的总结、感悟与建议

  • 课程总结及感悟:
  • 1.掌握了学习新语言的能力:新内容的本学期接触了一门重要而实用的语言——Python,在选学之前有很多顾虑,担心作为文科生能否理解计算机语言与理科的逻辑思维。虽然在学习过程中的确遇到了很多困难,例如对语句编写的不熟悉,面对红色感叹号和波浪线的不知所措,对满屏英文的不理解,但老师的讲解细致耐心,不厌其烦地为我们补讲计算机的相关基础知识,让我们彻底理解,让我们在短暂的学习之旅中收获了知识与热情;
  • 2.自学能力显著提高:老师的讲解虽然十分详尽,但在课下完成作业时也存在遗忘知识点的情况。在CSDN上查找相关解决办法,在哔哩哔哩里查找Python课程,通过本学期的学习,自身的自学能力、信息检索能力与解决问题的能力显著提高,在学习中不断修改完善代码,真正做到了知行合一;
  • 3.综合水平提高:Python全英文的界面使日常的操作变的更加困难,在写代码遇到报错时,也需要百度单词来理解。老师日常安排的单词打卡,不仅有利于Python的学习,也为课业之内的英语学习提供了很大帮助,提高了整体学科的学习水平;
  • 4.情感体验得到显著提高:课堂不是枯燥,而是活跃与欢快的,老师的包容与耐心让这段学习之旅更加珍贵。并且在不断战胜困难,消除一个个红色bug的过程中,自己的耐力与抗挫折能力不断提升,为日后其他学科的学习提供力量。
  • 建议:
  • 1.建议老师可以通过在课后学习通发布简单的习题的方式,为同学们提供及时巩固的环节,便于知识点的掌握;
  • 2.可以以加平时分的方式,鼓励同学们多多回答问题,积极参与课堂互动,活跃课堂氛围,提升听课的集中度;
  • 3.部分较简单而偏理论的知识点,可以鼓励同学们在提前预习后,以小组展示的方式为其他同学讲解,进一步提升同学们主动学习的意愿;
  • 4.在课本之外,具体的实例可以向同学们预先征集,针对同学们关注感兴趣的话题进行实验,提高积极性与主动性。
  • 最后,真诚感谢老师一学期以来的辛勤讲授,感恩相遇。祝您工作顺利,生活幸福!
...全文
134 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

42

社区成员

发帖
与我相关
我的任务
社区描述
技术交流
教育电商 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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