From a581258d91ea37ccbb296fd19f6b6ab2b5db3b07 Mon Sep 17 00:00:00 2001 From: 2509165008 <2509165008@student.edu.cn> Date: Thu, 25 Jun 2026 16:01:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 156 ------------------------------ data/.gitkeep | 1 - data/images/.gitkeep | 1 - q2_1_crawler/.gitkeep | 1 - q2_1_crawler/move.html | 102 +++++++++++++++++++ q2_1_crawler/movie.json | 102 +++++++++++++++++++ q2_1_crawler/q2_1.py | 65 +++++++++++++ q2_1_crawler/q2_2.py | 43 ++++++++ q3/.gitkeep | 1 - q3/q3_1/.gitkeep | 1 - q3/q3_1/q3_1_image_label.zip | Bin 0 -> 893 bytes q3/q3_2/.gitkeep | 1 - q3/q3_2/q3_2_takeout_reviews.json | 1 + q3/q3_3_质量自评.md | 13 +++ q4/.gitkeep | 1 - q4/q4_1/.gitkeep | 1 - q4/q4_1/q4_1.py | 33 +++++++ q4/q4_1/q4_1_bar.png | Bin 0 -> 15637 bytes q4/q4_2/.gitkeep | 1 - q4/q4_2/q4_2.py | 24 +++++ q4/q4_2/q4_2_scatter.png | Bin 0 -> 30633 bytes q4/q4_3a/.gitkeep | 1 - q4/q4_3a/q4_3a.py | 19 ++++ q4/q4_3a/q4_3a_hist.png | Bin 0 -> 19044 bytes q4/q4_3b/.gitkeep | 1 - q4/q4_3b/q4_3b.py | 19 ++++ q4/q4_3b/q4_3b_hist.png | Bin 0 -> 19691 bytes 27 files changed, 421 insertions(+), 167 deletions(-) delete mode 100644 README.md delete mode 100644 data/.gitkeep delete mode 100644 data/images/.gitkeep delete mode 100644 q2_1_crawler/.gitkeep create mode 100644 q2_1_crawler/move.html create mode 100644 q2_1_crawler/movie.json create mode 100644 q2_1_crawler/q2_1.py create mode 100644 q2_1_crawler/q2_2.py delete mode 100644 q3/.gitkeep delete mode 100644 q3/q3_1/.gitkeep create mode 100644 q3/q3_1/q3_1_image_label.zip delete mode 100644 q3/q3_2/.gitkeep create mode 100644 q3/q3_2/q3_2_takeout_reviews.json create mode 100644 q3/q3_3_质量自评.md delete mode 100644 q4/.gitkeep delete mode 100644 q4/q4_1/.gitkeep create mode 100644 q4/q4_1/q4_1.py create mode 100644 q4/q4_1/q4_1_bar.png delete mode 100644 q4/q4_2/.gitkeep create mode 100644 q4/q4_2/q4_2.py create mode 100644 q4/q4_2/q4_2_scatter.png delete mode 100644 q4/q4_3a/.gitkeep create mode 100644 q4/q4_3a/q4_3a.py create mode 100644 q4/q4_3a/q4_3a_hist.png delete mode 100644 q4/q4_3b/.gitkeep create mode 100644 q4/q4_3b/q4_3b.py create mode 100644 q4/q4_3b/q4_3b_hist.png diff --git a/README.md b/README.md deleted file mode 100644 index 8b03608..0000000 --- a/README.md +++ /dev/null @@ -1,156 +0,0 @@ - - -# 模拟考试(实操题) - -**考试时间**:90 分钟(2 课时) -**考试形式**:开卷 -**总分**:70 分 - ---- - -## ⚠️ 重要说明 - -- 本题所有代码、标注结果、图片都要上传到 **本仓库** 下 -- **文件夹必须按下面要求** 的结构创建,否则不得分 -- 数据爬取代码 **必须** 在一次爬取中获取到所有需要数据(数据刷新会变) - ---- - -## 第Ⅱ部分 实操题 - -### 一、数据爬取(25 分) - -**本题中涉及的爬虫代码必须包含检测头,同时由于网页刷新后数据会变化,必须在一次爬取中获取到所有需要数据,否则不得分。** - -#### 第 1 题(10 分) - -用 python 代码访问网址 `https://exam.detr.top/exam-b/movies`,抓取网页的数据编号和其中全部 10 部电影的信息,并分别保存为两个文件: - -- `movies.json`(存放数据编号和电影信息,电影中包含的键为 `id, title, director, year, rating, duration, genre, actors_count`) -- `movies.html`(保存原始网页源码) - -#### 第 2 题(15 分) - -根据 `movies.json` 中的数据: - -1. ① 找出评分最高和最低的电影,打印电影名 + 评分。 -2. ② 统计各类型的电影数量,用字典格式输出。 -3. ③ 统计各导演的电影数量,用字典格式输出。 -4. ④ 统计 2020 年(含)以后上映的电影数量。 - ---- - -### 二、数据标注(20 分) - -**本章中所有标注结果都需要导出文件,并上传到本仓库的 `q3` 文件夹下。每个小题单独放一个子文件夹。未按要求上传文件不得分。** - -#### 第 1 小题(8 分)— 图像目标检测标注 - -在 Label Studio 中打开图片 `data/images/标注练习1.jpg`(图片中含 1 只猫、1 只狗、1 辆车,背景为街道),使用 Rectangle Labels 工具标出 3 个目标物。要求: - -1. (1)边界框必须紧贴目标物轮廓 -2. (2)标签必须为 `cat`、`dog`、`car`(**必须小写英文**,不能写成"猫/狗/车"或"Cat/Dog/Car") -3. (3)导出为 YOLO 格式压缩包 -4. (4)将压缩包命名为 `q3_1_image_labels.zip` 并上传到 `q3/q3_1/` 文件夹 -5. (5)压缩包解压后必须包含 `classes.txt` 和 `labels/` 目录 - -#### 第 2 小题(7 分)— 文本情感分类标注 - -现有 5 条外卖评论文本 `data/reviews.json`,用 Label Studio 完成情感分类标注(标签:正面/负面),导出为 JSON 格式。要求: - -1. (1)标注必须包含每条评论的 `id` 和 `text` 字段 -2. (2)每个标注必须有一个 `sentiment` 字段,值为 `"正面"` 或 `"负面"` -3. (3)5 条评论必须全部标注 -4. (4)将导出文件命名为 `q3_2_takeout_reviews.json` 并上传到 `q3/q3_2/` 文件夹 - -#### 第 3 小题(5 分)— 标注质量自评 - -在 `q3` 文件夹下新建 `q3_3_质量自评.md` 文件,写一份 200 字左右的标注质量自评报告,内容包括: - -1. (1)标注前准备 —— 你制定了什么标注规范?看了几张示例图片?(2 分) -2. (2)标注过程 —— 遇到什么困难?如何解决?中途不确定的标注如何处理?(2 分) -3. (3)标注后检查 —— 做了哪些检查?是否导入了多份相同数据互相对比?(1 分) - ---- - -### 三、数据可视化(25 分) - -**本章所有图表都要用 matplotlib 绘制,PNG 文件必须用 `plt.savefig` 保存。所有 Python 代码和 PNG 文件都需要上传到本仓库的 `q4` 文件夹下,每个小题单独一个子文件夹。** - -#### 第 1 小题(8 分)— 柱状图 - -从 `movies.json`(本卷第 II 部分保存的 `movies.json`)读取数据,用 matplotlib 绘制**各类型的电影数量柱状图**。要求: - -1. (1)使用 `plt.bar` 函数绘制柱状图 -2. (2)X 轴为类型名称 -3. (3)Y 轴为电影数量 -4. (4)标题设置为"类型电影数量分布"(用 `plt.title`) -5. (5)保存为 `q4_1_bar.png`(用 `plt.savefig`,`dpi=150`) -6. (6)Python 代码保存为 `q4_1.py` - -#### 第 2 小题(7 分)— 散点图 - -从 `movies.json` 读取数据,用 matplotlib 绘制**评分 vs 时长散点图**。要求: - -1. (1)使用 `plt.scatter` 函数绘制散点图 -2. (2)X 轴为时长(分钟),Y 轴为评分 -3. (3)标题设置为"时长与评分关系散点图"(用 `plt.title`) -4. (4)使用 `plt.xlabel` 和 `plt.ylabel` 设置轴标签 -5. (5)点的颜色设为红色,`alpha=0.6`(半透明) -6. (6)保存为 `q4_2_scatter.png`(用 `plt.savefig`,`dpi=150`) -7. (7)Python 代码保存为 `q4_2.py` - -#### 第 3 小题(10 分)— 直方图 - -从 `movies.json` 读取数据,绘制**两张独立的直方图**: - -- **(A)评分直方图(5 分)**:使用 `plt.hist` 函数绘制 10 部电影评分字段的分布直方图,`bins=5`,颜色蓝色,标题"评分分布"(用 `plt.title`),X 轴标签"评分"(用 `plt.xlabel`),保存为 `q4_3a_hist.png`(`dpi=150`),代码保存为 `q4_3a.py` -- **(B)时长直方图(5 分)**:使用 `plt.hist` 函数绘制 10 部电影时长字段的分布直方图,`bins=5`,颜色绿色,标题"时长分布",X 轴标签"时长(分钟)",保存为 `q4_3b_hist.png`(`dpi=150`),代码保存为 `q4_3b.py` - ---- - -## 📁 仓库文件夹结构(必须按这个提交) - -``` -simulated-examination/ -├── data/ # 模拟考数据(已上传) -│ ├── images/ -│ │ └── 标注练习1.jpg -│ └── reviews.json -├── q2_1_crawler/ -│ ├── q2_1.py # 数据爬取第 1 题代码 -│ ├── q2_2.py # 数据爬取第 2 题代码 -│ ├── movies.json # 爬取结果(由 q2_1.py 生成) -│ └── movies.html # 原始网页(由 q2_1.py 生成) -├── q3/ -│ ├── q3_1/ -│ │ └── q3_1_image_labels.zip # 图像标注 YOLO 导出 -│ ├── q3_2/ -│ │ └── q3_2_takeout_reviews.json # 文本标注 JSON 导出 -│ └── q3_3_质量自评.md -├── q4/ -│ ├── q4_1/ -│ │ ├── q4_1.py # 柱状图代码 -│ │ └── q4_1_bar.png # 柱状图结果 -│ ├── q4_2/ -│ │ ├── q4_2.py # 散点图代码 -│ │ └── q4_2_scatter.png # 散点图结果 -│ ├── q4_3a/ -│ │ ├── q4_3a.py # 评分直方图代码 -│ │ └── q4_3a_hist.png # 评分直方图结果 -│ ├── q4_3b/ -│ │ ├── q4_3b.py # 时长直方图代码 -│ │ └── q4_3b_hist.png # 时长直方图结果 -``` - ---- - -## 提交方式 - -1. 在本仓库下**按上面的文件夹结构**创建目录 -2. 依次完成 3 大题的所有小题 -3. 每完成一题就 `git add` + `git commit` + `git push` 到本仓库 -4. 考试结束时**最后一次 commit 时间**视为交卷时间 diff --git a/data/.gitkeep b/data/.gitkeep deleted file mode 100644 index b22e7b9..0000000 --- a/data/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# 此目录用于存放学生提交的文件,请勿删除 \ No newline at end of file diff --git a/data/images/.gitkeep b/data/images/.gitkeep deleted file mode 100644 index b22e7b9..0000000 --- a/data/images/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# 此目录用于存放学生提交的文件,请勿删除 \ No newline at end of file diff --git a/q2_1_crawler/.gitkeep b/q2_1_crawler/.gitkeep deleted file mode 100644 index b22e7b9..0000000 --- a/q2_1_crawler/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# 此目录用于存放学生提交的文件,请勿删除 \ No newline at end of file diff --git a/q2_1_crawler/move.html b/q2_1_crawler/move.html new file mode 100644 index 0000000..667e109 --- /dev/null +++ b/q2_1_crawler/move.html @@ -0,0 +1,102 @@ +[ + { + "id": "1", + "title": "泰坦尼克号", + "director": "Frank Darabont", + "year": "2015", + "rating": "6.8", + "duration": "91", + "genre": "科幻", + "actors_count": "3" + }, + { + "id": "2", + "title": "星际穿越", + "director": "陈凯歌", + "year": "2021", + "rating": "6.2", + "duration": "113", + "genre": "科幻", + "actors_count": "2" + }, + { + "id": "3", + "title": "三傻大闹宝莱坞", + "director": "Robert Zemeckis", + "year": "2004", + "rating": "7.4", + "duration": "95", + "genre": "悬疑", + "actors_count": "4" + }, + { + "id": "4", + "title": "阿甘正传", + "director": "James Cameron", + "year": "2013", + "rating": "6.9", + "duration": "93", + "genre": "爱情", + "actors_count": "4" + }, + { + "id": "5", + "title": "放牛班的春天", + "director": "宫崎骏", + "year": "2005", + "rating": "7.1", + "duration": "127", + "genre": "悬疑", + "actors_count": "3" + }, + { + "id": "6", + "title": "千与千寻", + "director": "Christopher Nolan", + "year": "2024", + "rating": "6.4", + "duration": "147", + "genre": "动画", + "actors_count": "3" + }, + { + "id": "7", + "title": "忠犬八公的故事", + "director": "Lasse Hallström", + "year": "2002", + "rating": "6.2", + "duration": "166", + "genre": "剧情", + "actors_count": "4" + }, + { + "id": "8", + "title": "霸王别姬", + "director": "Rajkumar Hirani", + "year": "2005", + "rating": "7.9", + "duration": "149", + "genre": "冒险", + "actors_count": "2" + }, + { + "id": "9", + "title": "肖申克的救赎", + "director": "Christophe Barratier", + "year": "2008", + "rating": "9.3", + "duration": "91", + "genre": "冒险", + "actors_count": "2" + }, + { + "id": "10", + "title": "盗梦空间", + "director": "Christopher Nolan", + "year": "2019", + "rating": "7.1", + "duration": "132", + "genre": "剧情", + "actors_count": "5" + } +] \ No newline at end of file diff --git a/q2_1_crawler/movie.json b/q2_1_crawler/movie.json new file mode 100644 index 0000000..667e109 --- /dev/null +++ b/q2_1_crawler/movie.json @@ -0,0 +1,102 @@ +[ + { + "id": "1", + "title": "泰坦尼克号", + "director": "Frank Darabont", + "year": "2015", + "rating": "6.8", + "duration": "91", + "genre": "科幻", + "actors_count": "3" + }, + { + "id": "2", + "title": "星际穿越", + "director": "陈凯歌", + "year": "2021", + "rating": "6.2", + "duration": "113", + "genre": "科幻", + "actors_count": "2" + }, + { + "id": "3", + "title": "三傻大闹宝莱坞", + "director": "Robert Zemeckis", + "year": "2004", + "rating": "7.4", + "duration": "95", + "genre": "悬疑", + "actors_count": "4" + }, + { + "id": "4", + "title": "阿甘正传", + "director": "James Cameron", + "year": "2013", + "rating": "6.9", + "duration": "93", + "genre": "爱情", + "actors_count": "4" + }, + { + "id": "5", + "title": "放牛班的春天", + "director": "宫崎骏", + "year": "2005", + "rating": "7.1", + "duration": "127", + "genre": "悬疑", + "actors_count": "3" + }, + { + "id": "6", + "title": "千与千寻", + "director": "Christopher Nolan", + "year": "2024", + "rating": "6.4", + "duration": "147", + "genre": "动画", + "actors_count": "3" + }, + { + "id": "7", + "title": "忠犬八公的故事", + "director": "Lasse Hallström", + "year": "2002", + "rating": "6.2", + "duration": "166", + "genre": "剧情", + "actors_count": "4" + }, + { + "id": "8", + "title": "霸王别姬", + "director": "Rajkumar Hirani", + "year": "2005", + "rating": "7.9", + "duration": "149", + "genre": "冒险", + "actors_count": "2" + }, + { + "id": "9", + "title": "肖申克的救赎", + "director": "Christophe Barratier", + "year": "2008", + "rating": "9.3", + "duration": "91", + "genre": "冒险", + "actors_count": "2" + }, + { + "id": "10", + "title": "盗梦空间", + "director": "Christopher Nolan", + "year": "2019", + "rating": "7.1", + "duration": "132", + "genre": "剧情", + "actors_count": "5" + } +] \ No newline at end of file diff --git a/q2_1_crawler/q2_1.py b/q2_1_crawler/q2_1.py new file mode 100644 index 0000000..2d782cf --- /dev/null +++ b/q2_1_crawler/q2_1.py @@ -0,0 +1,65 @@ +import requests +from bs4 import BeautifulSoup as bs +import json + +url = 'https://exam.detr.top/exam-b/movies' +headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', + 'Referer':'https://exam.detr.top/exam-b/movies'} +req = requests.get(url, headers=headers) +req.encoding="utf-8" + +data=[] + +soup=bs(req.text,"html.parser") +# print(soup) +#id, title, director, year, rating, duration, genre, actors_count + +item=soup.select("table tbody tr" ) +movie_list=[] + +for tr in item: + tds=tr.find_all("td") + tds=list(tds) + # print(tds) + if len(tds)<8: + continue + movie={ + "id":tds[0].get_text(strip=True), + "title":tds[1].get_text(strip=True), + "director":tds[2].get_text(strip=True), + "year":tds[3].get_text(strip=True), + "rating":tds[4].get_text(strip=True), + "duration":tds[5].get_text(strip=True), + "genre":tds[6].get_text(strip=True), + "actors_count":tds[7].get_text(strip=True) + } + movie_list.append(movie) +print(movie_list) + + +with open('movie.json', 'w', encoding='utf-8') as f: + json.dump(movie_list, f, ensure_ascii=False, indent=2) + +with open("move.html","w",encoding='utf-8') as f: + json.dump(movie_list, f, ensure_ascii=False, indent=2) + + + + + +# for i in range(len(items)): +# rank=i+1 +# title=items[i].find("span",class_="title").get_text() +# actors=items[i].find("div",class_="bd").get_text().strip() +# try: +# actors=actors.split("主演:")[1].split("\n")[0] +# except: +# actors="无" +# quote=items[i].find("p",class_="quote").get_text().strip() + +# data.append({ +# "rank":rank, +# "title":title, +# "actors":actors, +# "quote":quote +# }) \ No newline at end of file diff --git a/q2_1_crawler/q2_2.py b/q2_1_crawler/q2_2.py new file mode 100644 index 0000000..f30c2f7 --- /dev/null +++ b/q2_1_crawler/q2_2.py @@ -0,0 +1,43 @@ +# ① 找出评分最高和最低的电影,打印电影名 + 评分。 +# ② 统计各类型的电影数量,用字典格式输出。 +# ③ 统计各导演的电影数量,用字典格式输出。 +# ④ 统计 2020 年(含)以后上映的电影数量。 + +import json + + + +with open('movie.json', 'r', encoding='utf-8') as f: + data=json.load(f) + # print(data) + + +sort_movie=sorted(data,key=lambda x:x["rating"]) +min=sort_movie[0] +max=sort_movie[-1] +print("评分最低的电影",min["title"],min["rating"]) +print("评分最高的电影",max["title"],max["rating"]) + +genre_shu={} +for g in data: + ge=g["genre"] + if ge in genre_shu: + genre_shu[ge]+=1 + else: + genre_shu[ge]=1 +print("各类型的电影数量",genre_shu) + +director_shu={} +for d in data: + di=d["director"] + if di in director_shu: + director_shu[di]+=1 + else: + director_shu[di]=1 +print("各导演的电影数量",director_shu) + +a=0 +for y in data: + if int(y["year"]) >= 2020: + a+=1 +print("2020 年(含)以后上映的电影数量",a) \ No newline at end of file diff --git a/q3/.gitkeep b/q3/.gitkeep deleted file mode 100644 index b22e7b9..0000000 --- a/q3/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# 此目录用于存放学生提交的文件,请勿删除 \ No newline at end of file diff --git a/q3/q3_1/.gitkeep b/q3/q3_1/.gitkeep deleted file mode 100644 index b22e7b9..0000000 --- a/q3/q3_1/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# 此目录用于存放学生提交的文件,请勿删除 \ No newline at end of file diff --git a/q3/q3_1/q3_1_image_label.zip b/q3/q3_1/q3_1_image_label.zip new file mode 100644 index 0000000000000000000000000000000000000000..5b08d8435c580cb7bd58bf3da977c88ded469839 GIT binary patch literal 893 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 E4t-(%v;Y7A literal 0 HcmV?d00001 diff --git a/q4/q4_2/.gitkeep b/q4/q4_2/.gitkeep deleted file mode 100644 index b22e7b9..0000000 --- a/q4/q4_2/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# 此目录用于存放学生提交的文件,请勿删除 \ No newline at end of file diff --git a/q4/q4_2/q4_2.py b/q4/q4_2/q4_2.py new file mode 100644 index 0000000..a3e4b3d --- /dev/null +++ b/q4/q4_2/q4_2.py @@ -0,0 +1,24 @@ +import matplotlib.pyplot as plt +import json + +rating=[] +duration=[] + +with open('movie.json', 'r', encoding='utf-8') as f: + data=json.load(f) + # print(data) + for i in data: + rating.append(i["rating"]) + duration.append(i["duration"]) +plt.figure(figsize=(12, 8)) +plt.scatter(duration, rating, + c='red', + s=80, # 点的大小 + alpha=0.6, # 透明度 + edgecolors='white') # 点的边框 +plt.title('时长与评分关系散点图', fontsize=14) +plt.xlabel('时长', fontsize=12) +plt.ylabel('评分', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.5) +plt.show() + diff --git a/q4/q4_2/q4_2_scatter.png b/q4/q4_2/q4_2_scatter.png new file mode 100644 index 0000000000000000000000000000000000000000..5dbac63124fc1e43b9d136be6a7b17c77281e12d GIT binary patch literal 30633 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Ð~FGP2URe@8W(Z)49c&O8EM+Q7-3tK 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 Olfl!~&t;ucLK6Uxspr!G literal 0 HcmV?d00001 diff --git a/q4/q4_3a/.gitkeep b/q4/q4_3a/.gitkeep deleted file mode 100644 index b22e7b9..0000000 --- a/q4/q4_3a/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# 此目录用于存放学生提交的文件,请勿删除 \ No newline at end of file diff --git a/q4/q4_3a/q4_3a.py b/q4/q4_3a/q4_3a.py new file mode 100644 index 0000000..bc84d8b --- /dev/null +++ b/q4/q4_3a/q4_3a.py @@ -0,0 +1,19 @@ +import matplotlib.pyplot as plt +import json +rating=[] + +with open('movie.json', 'r', encoding='utf-8') as f: + data=json.load(f) + # print(data) + for i in data: + rating.append(i["rating"]) + +plt.figure(figsize=(12,8)) +plt.hist(rating, # 数据 + bins=3, # 分成几个柱子 + color='#3498DB', # 颜色 + edgecolor='white') # 柱子边框颜色 +plt.title('评分分布', fontsize=14) +plt.xlabel('评分', fontsize=13) +plt.grid(True, linestyle='--', alpha=0.5, axis='y') +plt.show() \ No newline at end of file diff --git a/q4/q4_3a/q4_3a_hist.png b/q4/q4_3a/q4_3a_hist.png new file mode 100644 index 0000000000000000000000000000000000000000..6c6873628235fa889a82cbfa6b34174c1ac8c097 GIT binary patch literal 19044 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 literal 0 HcmV?d00001