93
社区成员
发帖
与我相关
我的任务
分享课程:《Python程序设计》
班级: 2341
姓名: 洪碧寒
学号:20234111
实验教师:王志强
实验日期:2024年5月14日
必修/选修: 专选课
【1】Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
具体举例如下:
(1)编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
(2):利用公开数据集,开展图像分类、恶意软件检测等
(3):利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
(4):爬取天气数据,实现自动化微信提醒
(5):利用爬虫,实现自动化下载网站视频、文件等。
(6):编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
【2】本实验聚焦内容:
(1)利用Python库,基于OCR技术实现自动化提取数据并使用图片呈现,完成数据的可视化阅读。
(2)通过爬虫技术从社交网络爬取数据,实现图像分类。
(一)实验一:利用爬虫技术对直播平台进行监控分析,并提取相关照片,实现图像分类
【1】实验一代码设计思路:
(1)设计此实验的目的:利用爬虫技术对直播平台图片提取,保证平台的实时可视与图像分类。
(2)设计此实验需要的重点知识:
1)爬虫技术:涉及如何自动访问和提取网站数据的技术,包括URL管理、网页请求与响应、数据解析以及应对反爬虫策略。
2)直播平台监控分析:侧重于对直播平台数据流的分析,包括直播间的创建、关闭、观众互动等事件,以及基于这些数据的实时和趋势分析。
3)照片提取:涉及从直播平台网页或数据流中识别图片链接,下载图片,并对图片质量进行评估。
4)图像分类:包括使用计算机视觉技术从图片中提取特征,选择合适的分类算法对图片进行分类,并使用数据集训练和评估模型。
【2】实验一代码分析解读:
1)导入必要的模块requests和os
import requests
import os
2)定义函数get_html(url),用于发送GET请求获取指定URL的响应数据。函数中设置了请求头部信息, 以模拟浏览器的请求。函数返回响应数据的JSON格式内容。
def get_html(url):
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
}
response = requests.get(url=url, headers=header)
# print(response.json())
html = response.json()
return html
3)定义函数parse_html(html), 用于解析响应数据中的图片信息。通过分析响应数据的结构,提取出每个图片的URL和标题,并将其存储在一个字典中,然后将所有字典组成的列表返回。
def parse_html(html):
rl_list = html['data']['rl']
# print(rl_list)
img_info_list = []
for rl in rl_list:
img_info = {}
img_info['img_url'] = rl['rs1']
img_info['title'] = rl['nn']
# print(img_url)
# exit()
img_info_list.append(img_info)
# print(img_info_list)
return img_info_list
4)定义函数save_to_images(img_info_list),用于保存图片到本地。首先创建一个目录"directory",然后遍历图片信息列表,依次下载每个图片并保存到目录中,图片的文件名为标题加上".jpg"后缀。
def save_to_images(img_info_list):
dir_path = 'directory'
if not os.path.exists(dir_path):
os.makedirs(dir_path)
for img_info in img_info_list:
img_path = os.path.join(dir_path, img_info['title'] + '.jpg')
res = requests.get(img_info['img_url'])
res_img = res.content
with open(img_path, 'wb') as f:
f.write(res_img)
# exit()
5)在主程序中,设置要爬取的URL,并调用前面定义的函数来执行爬取、解析和保存操作。
if __name__ == '__main__':
url = 'https://www.douyu.com/gapi/rknc/directory/yzRec/1'
html = get_html(url)
img_info_list = parse_html(html)
save_to_images(img_info_list)

(二)实验二:利用爬虫技术完成百度热搜的数据爬取,并通过柱状图实现可视化阅读:
【1】实验二代码设计思路:
(1)设计此实验的目的:利用爬虫技术完成百度热搜的数据提取,并以柱状图呈现,保证阅读信息的可视性与高效性。
(2)设计此实验需要的重点知识:
1)爬虫技术:模拟浏览器请求,从网站抓取并解析数据。
2)数据提取与处理:从抓取的数据中提取关键信息,清洗整理后存储备用。
3)数据可视化:利用图表库将数据以柱状图等形式直观展示。
4)阅读信息的高效性:通过数据可视化,快速获取并分析信息,支持高效决策。
【2】实验二代码分析解读:
1)发起HTTP请求获取百度热搜页面内容
url = 'https://top.baidu.com/board?tab=realtime'
response = requests.get(url)
html = response.content
2)使用BeautifulSoup解析页面内容
soup = BeautifulSoup(html, 'html.parser')
3)提取热搜数据
hot_searches = []
for item in soup.find_all('div', {'class': 'c-single-text-ellipsis'}):
hot_searches.append(item.text)
4)设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
5)绘制条形图,调整条形图的高度
plt.figure(figsize=(15, 10))
x = range(len(hot_searches))
y = list(reversed(range(1, len(hot_searches)+1)))
plt.barh(x, y, tick_label=hot_searches, height=0.8)
6)添加标题和标签
plt.title('百度热搜排行榜')
plt.xlabel('排名')
plt.ylabel('关键词')
7)调整坐标轴刻度
plt.xticks(range(1, len(hot_searches)+1))
8)调整条形图之间的间隔
plt.subplots_adjust(hspace=0.8, wspace=0.5)
9)显示图形
plt.tight_layout()
plt.show()

【1】实验一结果呈现:成功爬取相关直播平台,并在python文件夹设置directory文件夹,存取相关直播图片,具体内容如下:
b8d4f0bd91a634b856482453719cbf5b-CSDN直播
【2】实验二结果呈现:利用爬虫技术完成对百度热搜的数据提取,并以柱状图方式呈现,具体内容如下:
【1】实验遇到的问题及解决方式:
(1)对于bs4,plt库函数的安装问题—————在csdn搜集相关资料,通过pip install方式完成下载库函数
(2)对于实验设计代码的书写问题—————基础知识不够熟练,在阅读ppt后能够回忆起相关内容,应多加练习
【2】实验感想与感悟:
感谢老师的耐心讲解,让我们可以更好地了解python这个独具魅力的语言,并进行略有痛苦的学习过程。
在开始实验之前,我查阅了大量的资料,了解了网络爬虫的基本原理、工作流程以及常见的爬虫框架。Python作为一门功能强大的编程语言,其丰富的库和模块为网络爬虫的开发提供了极大的便利。通过这次实验,我深刻体会到了网络爬虫技术的复杂性和挑战性。网络爬虫不仅需要熟悉编程语言和网络知识,还需要具备一定的数据处理和分析能力。同时,也要注意网络爬虫技术的道德和法律问题。在爬取网站数据时,必须遵守网站的robots协议和相关法律法规,尊重网站的版权和隐私。
【3】实验中用到的相关资料:
(1)CSDN:python库函数安装方法,链接:python库函数安装方法_pingouin怎么安装-CSDN博客
(2)CSDN:Python入门基础知识总结,链接:Python入门基础知识总结(赶紧收藏)-CSDN博客
(3)CSDN:Python爬虫之入门保姆级教程,链接:Python爬虫之入门保姆级教程,学不会我去你家刷厕所_python爬虫教程-CSDN博客