上传文件至 /
This commit is contained in:
216
README.md
216
README.md
@@ -1,96 +1,156 @@
|
||||
<!--
|
||||
本文件由助教自动生成
|
||||
课程: 人工智能数据服务 (090945)
|
||||
班级: AI_251
|
||||
学号: 2509165003
|
||||
仓库: final-practice
|
||||
原讲义文件: 期末实践题_电影类别预测.md
|
||||
用途: 模拟考试实操题(2026-06-23)
|
||||
说明: 这是模拟考试,所有代码提交到这个仓库
|
||||
-->
|
||||
|
||||
# 人工智能数据服务 · 综合实践
|
||||
# 模拟考试(实操题)
|
||||
|
||||
> 课程代码:090945 班级:人工智能251班(50人)
|
||||
> 考试形式:上机实践 · 2 节连堂(90 分钟)· 个人独立完成
|
||||
**考试时间**:90 分钟(2 课时)
|
||||
**考试形式**:开卷
|
||||
**总分**:70 分
|
||||
|
||||
---
|
||||
|
||||
## 一、说明
|
||||
## ⚠️ 重要说明
|
||||
|
||||
**类别词典**(共 10 类,本试卷通用):
|
||||
```
|
||||
0.剧情 1.喜剧 2.科幻 3.悬疑 4.动作
|
||||
5.爱情 6.动画 7.犯罪 8.奇幻 9.纪录
|
||||
```
|
||||
注:一部电影一个类别
|
||||
|
||||
**要求**:
|
||||
1. 独立完成
|
||||
2. 可参考 gitea 中的模板文件
|
||||
3. 禁止使用豆包等大模型工具
|
||||
4. 完成后提交到 Gitea 仓库 final-practice
|
||||
- 本题所有代码、标注结果、图片都要上传到 **本仓库** 下
|
||||
- **文件夹必须按下面要求** 的结构创建,否则不得分
|
||||
- 数据爬取代码 **必须** 在一次爬取中获取到所有需要数据(数据刷新会变)
|
||||
|
||||
---
|
||||
|
||||
## 二、数据采集
|
||||
## 第Ⅱ部分 实操题
|
||||
|
||||
爬取豆瓣电影 Top250 前 50 部电影信息,包含电影名称、主演、短评。数据保存为 `movies.json`。
|
||||
### 一、数据爬取(25 分)
|
||||
|
||||
JSON 字段示例:
|
||||
```json
|
||||
{"rank": 1, "title": "肖申克的救赎", "actors": "蒂姆·罗宾斯 / 摩根·弗里曼", "quote": "希望让人自由。"}
|
||||
**本题中涉及的爬虫代码必须包含检测头,同时由于网页刷新后数据会变化,必须在一次爬取中获取到所有需要数据,否则不得分。**
|
||||
|
||||
#### 第 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 # 时长直方图结果
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、数据处理与标注
|
||||
## 提交方式
|
||||
|
||||
读取 `movies.json`,整理出短评部分。并且使用 label-studio 进行数据标注。
|
||||
|
||||
操作要点:
|
||||
- 过滤 `quote` 字段为空的电影
|
||||
- 将待标注数据导入 label-studio
|
||||
- 给每条短评标注 10 个类别中**最显著的一个**
|
||||
- 导出标注结果
|
||||
|
||||
---
|
||||
|
||||
## 四、模型训练
|
||||
|
||||
使用标注的数据,使用 MLP 模型进行训练。获取训练时候的 loss 和 precision 两个数据,分别保存为 `loss.csv` 和 `predictions.csv` 两个文件。
|
||||
|
||||
操作要点:
|
||||
- 用 `TfidfVectorizer` 提取文本特征
|
||||
- 划分训练集 / 验证集
|
||||
- 训练 MLP 模型并记录 loss
|
||||
- 预测测试集并计算 precision
|
||||
|
||||
---
|
||||
|
||||
## 五、可视化编程
|
||||
|
||||
基于 `loss.csv` 和 `predictions.csv` 绘制 2 张图。
|
||||
|
||||
操作要点:
|
||||
- 图 1:loss 曲线(横轴 epoch,纵轴 loss,含训练集和验证集)
|
||||
- 图 2:10 个类别的预测分布柱状图
|
||||
|
||||
---
|
||||
|
||||
## 六、提交规范
|
||||
|
||||
### 6.1 必交文件
|
||||
|
||||
```
|
||||
学号_姓名/
|
||||
├── movies.json
|
||||
├── quotes_processed.txt
|
||||
├── process_stats.json
|
||||
├── predictions.csv
|
||||
├── my_labels.csv
|
||||
├── report.md
|
||||
└── images/
|
||||
├── wordcloud.png
|
||||
└── category_bar.png
|
||||
```
|
||||
|
||||
---
|
||||
1. 在本仓库下**按上面的文件夹结构**创建目录
|
||||
2. 依次完成 3 大题的所有小题
|
||||
3. 每完成一题就 `git add` + `git commit` + `git push` 到本仓库
|
||||
4. 考试结束时**最后一次 commit 时间**视为交卷时间
|
||||
|
||||
33038
get-pip.py
Normal file
33038
get-pip.py
Normal file
File diff suppressed because it is too large
Load Diff
87
movie.py
Normal file
87
movie.py
Normal file
@@ -0,0 +1,87 @@
|
||||
import requests
|
||||
import json
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
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/120.0.0.0 Safari/537.36"
|
||||
}
|
||||
|
||||
resp = requests.get(url, headers=headers)
|
||||
resp.encoding = resp.apparent_encoding
|
||||
html_source = resp.text
|
||||
|
||||
with open("movies.html", "w", encoding="utf-8") as f:
|
||||
f.write(html_source)
|
||||
print("已保存原始网页:movies.html")
|
||||
|
||||
soup = BeautifulSoup(html_source, "html.parser")
|
||||
|
||||
code_text = soup.find("code").get_text(strip=True)
|
||||
data_id = code_text.split(":")[-1].strip()
|
||||
|
||||
table_rows = soup.find("table").find_all("tr")[1:]
|
||||
movie_list = []
|
||||
|
||||
for row in table_rows:
|
||||
tds = row.find_all("td")
|
||||
movie_info = {
|
||||
"id": int(tds[0].text),
|
||||
"title": tds[1].text,
|
||||
"director": tds[2].text,
|
||||
"year": int(tds[3].text),
|
||||
"rating": float(tds[4].text),
|
||||
"duration": int(tds[5].text),
|
||||
"genre": tds[6].text,
|
||||
"actors_count": int(tds[7].text)
|
||||
}
|
||||
movie_list.append(movie_info)
|
||||
|
||||
# 组装json总数据
|
||||
json_data = {
|
||||
"data_code": data_id,
|
||||
"movies": movie_list
|
||||
}
|
||||
|
||||
# 保存movies.json
|
||||
with open("movies.json", "w", encoding="utf-8") as f:
|
||||
json.dump(json_data, f, ensure_ascii=False, indent=4)
|
||||
print("已保存电影数据:movies.json")
|
||||
|
||||
# ====================== 第2题:读取movies.json进行数据分析 ======================
|
||||
# 读取json文件
|
||||
with open("movies.json", "r", encoding="utf-8") as f:
|
||||
load_data = json.load(f)
|
||||
movies = load_data["movies"]
|
||||
|
||||
# ① 找出评分最高、最低电影
|
||||
sorted_by_rating = sorted(movies, key=lambda x: x["rating"])
|
||||
min_movie = sorted_by_rating[0]
|
||||
max_movie = sorted_by_rating[-1]
|
||||
print("\n===== ① 评分最高/最低电影 =====")
|
||||
print(f"评分最低:{min_movie['title']} {min_movie['rating']}")
|
||||
print(f"评分最高:{max_movie['title']} {max_movie['rating']}")
|
||||
|
||||
# ② 统计各类型电影数量
|
||||
genre_count = {}
|
||||
for m in movies:
|
||||
g = m["genre"]
|
||||
genre_count[g] = genre_count.get(g, 0) + 1
|
||||
print("\n===== ② 各类型电影数量 =====")
|
||||
print(genre_count)
|
||||
|
||||
# ③ 统计各导演电影数量
|
||||
director_count = {}
|
||||
for m in movies:
|
||||
d = m["director"]
|
||||
director_count[d] = director_count.get(d, 0) + 1
|
||||
print("\n===== ③ 各导演电影数量 =====")
|
||||
print(director_count)
|
||||
|
||||
# ④ 统计2020年(含)以后上映电影数量
|
||||
cnt_after_2020 = 0
|
||||
for m in movies:
|
||||
if m["year"] >= 2020:
|
||||
cnt_after_2020 += 1
|
||||
print("\n===== ④ 2020年(含)后上映电影总数 =====")
|
||||
print(cnt_after_2020)
|
||||
152
movies.html
Normal file
152
movies.html
Normal file
@@ -0,0 +1,152 @@
|
||||
<!-- exam_fingerprint: B-20260705-9162 -->
|
||||
<!-- server_time: 2026-07-05 21:45:58 -->
|
||||
<!-- exam_paper: B -->
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>电影列表</title>
|
||||
<style>
|
||||
body { font-family: "Microsoft YaHei", sans-serif; margin: 20px; background: #f5f5f5; }
|
||||
h1 { color: #c0392b; }
|
||||
.meta { color: #999; font-size: 12px; margin-bottom: 15px; }
|
||||
.meta code { background: #e9ecef; padding: 2px 6px; border-radius: 3px; }
|
||||
table { width: 100%; border-collapse: collapse; background: white; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
|
||||
th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
|
||||
th { background: #c0392b; color: white; }
|
||||
tr:hover { background: #fef5f4; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>电影列表</h1>
|
||||
<p class="meta">数据编号:<code>B-20260705-9162</code></p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>编号</th>
|
||||
<th>电影名</th>
|
||||
<th>导演</th>
|
||||
<th>上映年份</th>
|
||||
<th>评分</th>
|
||||
<th>时长(分钟)</th>
|
||||
<th>类型</th>
|
||||
<th>主演数</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">1</td>
|
||||
<td class="item-title">放牛班的春天</td>
|
||||
<td class="item-director">Frank Darabont</td>
|
||||
<td class="item-year">2007</td>
|
||||
<td class="item-rating">8.9</td>
|
||||
<td class="item-duration">155</td>
|
||||
<td class="item-genre">悬疑</td>
|
||||
<td class="item-actors-count">5</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">2</td>
|
||||
<td class="item-title">霸王别姬</td>
|
||||
<td class="item-director">陈凯歌</td>
|
||||
<td class="item-year">2018</td>
|
||||
<td class="item-rating">6.6</td>
|
||||
<td class="item-duration">143</td>
|
||||
<td class="item-genre">剧情</td>
|
||||
<td class="item-actors-count">4</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">3</td>
|
||||
<td class="item-title">星际穿越</td>
|
||||
<td class="item-director">Robert Zemeckis</td>
|
||||
<td class="item-year">2018</td>
|
||||
<td class="item-rating">8.4</td>
|
||||
<td class="item-duration">165</td>
|
||||
<td class="item-genre">悬疑</td>
|
||||
<td class="item-actors-count">5</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">4</td>
|
||||
<td class="item-title">肖申克的救赎</td>
|
||||
<td class="item-director">James Cameron</td>
|
||||
<td class="item-year">2008</td>
|
||||
<td class="item-rating">8.6</td>
|
||||
<td class="item-duration">124</td>
|
||||
<td class="item-genre">剧情</td>
|
||||
<td class="item-actors-count">5</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">5</td>
|
||||
<td class="item-title">盗梦空间</td>
|
||||
<td class="item-director">宫崎骏</td>
|
||||
<td class="item-year">1993</td>
|
||||
<td class="item-rating">7.8</td>
|
||||
<td class="item-duration">90</td>
|
||||
<td class="item-genre">爱情</td>
|
||||
<td class="item-actors-count">2</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">6</td>
|
||||
<td class="item-title">泰坦尼克号</td>
|
||||
<td class="item-director">Christopher Nolan</td>
|
||||
<td class="item-year">2001</td>
|
||||
<td class="item-rating">6.7</td>
|
||||
<td class="item-duration">175</td>
|
||||
<td class="item-genre">喜剧</td>
|
||||
<td class="item-actors-count">4</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">7</td>
|
||||
<td class="item-title">忠犬八公的故事</td>
|
||||
<td class="item-director">Lasse Hallström</td>
|
||||
<td class="item-year">2004</td>
|
||||
<td class="item-rating">8.2</td>
|
||||
<td class="item-duration">91</td>
|
||||
<td class="item-genre">动画</td>
|
||||
<td class="item-actors-count">3</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">8</td>
|
||||
<td class="item-title">三傻大闹宝莱坞</td>
|
||||
<td class="item-director">Rajkumar Hirani</td>
|
||||
<td class="item-year">2011</td>
|
||||
<td class="item-rating">6.3</td>
|
||||
<td class="item-duration">175</td>
|
||||
<td class="item-genre">冒险</td>
|
||||
<td class="item-actors-count">3</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">9</td>
|
||||
<td class="item-title">阿甘正传</td>
|
||||
<td class="item-director">Christophe Barratier</td>
|
||||
<td class="item-year">2022</td>
|
||||
<td class="item-rating">7.9</td>
|
||||
<td class="item-duration">107</td>
|
||||
<td class="item-genre">动画</td>
|
||||
<td class="item-actors-count">4</td>
|
||||
</tr>
|
||||
|
||||
<tr class="item-row">
|
||||
<td class="item-id">10</td>
|
||||
<td class="item-title">千与千寻</td>
|
||||
<td class="item-director">Christopher Nolan</td>
|
||||
<td class="item-year">1993</td>
|
||||
<td class="item-rating">7.2</td>
|
||||
<td class="item-duration">129</td>
|
||||
<td class="item-genre">悬疑</td>
|
||||
<td class="item-actors-count">3</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
105
movies.json
Normal file
105
movies.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"data_code": "B-20260705-9162",
|
||||
"movies": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "放牛班的春天",
|
||||
"director": "Frank Darabont",
|
||||
"year": 2007,
|
||||
"rating": 8.9,
|
||||
"duration": 155,
|
||||
"genre": "悬疑",
|
||||
"actors_count": 5
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "霸王别姬",
|
||||
"director": "陈凯歌",
|
||||
"year": 2018,
|
||||
"rating": 6.6,
|
||||
"duration": 143,
|
||||
"genre": "剧情",
|
||||
"actors_count": 4
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"title": "星际穿越",
|
||||
"director": "Robert Zemeckis",
|
||||
"year": 2018,
|
||||
"rating": 8.4,
|
||||
"duration": 165,
|
||||
"genre": "悬疑",
|
||||
"actors_count": 5
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"title": "肖申克的救赎",
|
||||
"director": "James Cameron",
|
||||
"year": 2008,
|
||||
"rating": 8.6,
|
||||
"duration": 124,
|
||||
"genre": "剧情",
|
||||
"actors_count": 5
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"title": "盗梦空间",
|
||||
"director": "宫崎骏",
|
||||
"year": 1993,
|
||||
"rating": 7.8,
|
||||
"duration": 90,
|
||||
"genre": "爱情",
|
||||
"actors_count": 2
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"title": "泰坦尼克号",
|
||||
"director": "Christopher Nolan",
|
||||
"year": 2001,
|
||||
"rating": 6.7,
|
||||
"duration": 175,
|
||||
"genre": "喜剧",
|
||||
"actors_count": 4
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"title": "忠犬八公的故事",
|
||||
"director": "Lasse Hallström",
|
||||
"year": 2004,
|
||||
"rating": 8.2,
|
||||
"duration": 91,
|
||||
"genre": "动画",
|
||||
"actors_count": 3
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"title": "三傻大闹宝莱坞",
|
||||
"director": "Rajkumar Hirani",
|
||||
"year": 2011,
|
||||
"rating": 6.3,
|
||||
"duration": 175,
|
||||
"genre": "冒险",
|
||||
"actors_count": 3
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"title": "阿甘正传",
|
||||
"director": "Christophe Barratier",
|
||||
"year": 2022,
|
||||
"rating": 7.9,
|
||||
"duration": 107,
|
||||
"genre": "动画",
|
||||
"actors_count": 4
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"title": "千与千寻",
|
||||
"director": "Christopher Nolan",
|
||||
"year": 1993,
|
||||
"rating": 7.2,
|
||||
"duration": 129,
|
||||
"genre": "悬疑",
|
||||
"actors_count": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user