实验四 Python综合实验

20234111洪碧寒 2024-05-22 15:53:02

课程:《Python程序设计》
班级: 2341
姓名: 洪碧寒
学号:20234111
实验教师:王志强
实验日期:2024年5月14日
必修/选修: 专选课

 

1. 实验内容

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

具体举例如下:

(1)编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
(2):利用公开数据集,开展图像分类、恶意软件检测等
(3):利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
(4):爬取天气数据,实现自动化微信提醒
(5):利用爬虫,实现自动化下载网站视频、文件等。
(6):编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

【2】本实验聚焦内容:

(1)利用Python库,基于OCR技术实现自动化提取数据并使用图片呈现,完成数据的可视化阅读。

(2)通过爬虫技术从社交网络爬取数据,实现图像分类。

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()

 

3. 实验结果

【1】实验一结果呈现:成功爬取相关直播平台,并在python文件夹设置directory文件夹,存取相关直播图片,具体内容如下:

b8d4f0bd91a634b856482453719cbf5b-CSDN直播

 

【2】实验二结果呈现:利用爬虫技术完成对百度热搜的数据提取,并以柱状图方式呈现,具体内容如下:

1-CSDN直播

4. 实验感想

【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博客

 

...全文
165 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

93

社区成员

发帖
与我相关
我的任务
社区描述
Python程序设计作业
软件构建 高校 北京·丰台区
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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