diff --git a/movies.html b/movies.html
new file mode 100644
index 0000000..f1d9707
--- /dev/null
+++ b/movies.html
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+ 电影列表
+
+
+
+ 电影列表
+ 数据编号:B-20260623-3317
+
+
+
+
+ | 编号 |
+ 电影名 |
+ 导演 |
+ 上映年份 |
+ 评分 |
+ 时长(分钟) |
+ 类型 |
+ 主演数 |
+
+
+
+
+
+ | 1 |
+ 三傻大闹宝莱坞 |
+ Frank Darabont |
+ 2012 |
+ 8.6 |
+ 176 |
+ 爱情 |
+ 4 |
+
+
+
+ | 2 |
+ 泰坦尼克号 |
+ 陈凯歌 |
+ 2015 |
+ 9.0 |
+ 164 |
+ 冒险 |
+ 4 |
+
+
+
+ | 3 |
+ 阿甘正传 |
+ Robert Zemeckis |
+ 2009 |
+ 8.2 |
+ 148 |
+ 科幻 |
+ 2 |
+
+
+
+ | 4 |
+ 千与千寻 |
+ James Cameron |
+ 2010 |
+ 6.6 |
+ 107 |
+ 动画 |
+ 3 |
+
+
+
+ | 5 |
+ 放牛班的春天 |
+ 宫崎骏 |
+ 1995 |
+ 7.4 |
+ 119 |
+ 科幻 |
+ 4 |
+
+
+
+ | 6 |
+ 忠犬八公的故事 |
+ Christopher Nolan |
+ 2004 |
+ 7.9 |
+ 119 |
+ 动画 |
+ 2 |
+
+
+
+ | 7 |
+ 肖申克的救赎 |
+ Lasse Hallström |
+ 2016 |
+ 8.6 |
+ 138 |
+ 爱情 |
+ 2 |
+
+
+
+ | 8 |
+ 盗梦空间 |
+ Rajkumar Hirani |
+ 2020 |
+ 6.8 |
+ 120 |
+ 冒险 |
+ 3 |
+
+
+
+ | 9 |
+ 霸王别姬 |
+ Christophe Barratier |
+ 2004 |
+ 7.4 |
+ 140 |
+ 冒险 |
+ 5 |
+
+
+
+ | 10 |
+ 星际穿越 |
+ Christopher Nolan |
+ 1990 |
+ 8.5 |
+ 116 |
+ 悬疑 |
+ 4 |
+
+
+
+
+
+
\ No newline at end of file
diff --git a/movies.json b/movies.json
new file mode 100644
index 0000000..e35f50a
--- /dev/null
+++ b/movies.json
@@ -0,0 +1,4 @@
+{
+ "data_id": "unknown",
+ "movies": []
+}
\ No newline at end of file
diff --git a/q1.py b/q1.py
new file mode 100644
index 0000000..d512dd2
--- /dev/null
+++ b/q1.py
@@ -0,0 +1,44 @@
+import requests
+import json
+from bs4 import BeautifulSoup
+
+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",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
+ "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
+ "Referer": "https://exam.detr.top/"
+}
+
+url = "https://exam.detr.top/exam-b/movies"
+response = requests.get(url, headers=headers)
+response.encoding = "utf-8"
+
+with open("movies.html", "w", encoding="utf-8") as f:
+ f.write(response.text)
+
+soup = BeautifulSoup(response.text, "html.parser")
+data_id = soup.find("div", {"class": "data-id"}).text.strip() if soup.find("div", {"class": "data-id"}) else "unknown"
+
+movies = []
+movie_items = soup.find_all("div", {"class": "movie-item"})
+for item in movie_items[:10]:
+ movie = {
+ "id": item.find("span", {"class": "movie-id"}).text.strip(),
+ "title": item.find("h3", {"class": "movie-title"}).text.strip(),
+ "director": item.find("p", {"class": "movie-director"}).text.strip().replace("导演:", ""),
+ "year": int(item.find("p", {"class": "movie-year"}).text.strip().replace("上映年份:", "")),
+ "rating": float(item.find("span", {"class": "movie-rating"}).text.strip()),
+ "duration": int(item.find("p", {"class": "movie-duration"}).text.strip().replace("时长:", "").replace("分钟", "")),
+ "genre": item.find("p", {"class": "movie-genre"}).text.strip().replace("类型:", ""),
+ "actors_count": int(item.find("p", {"class": "movie-actors"}).text.strip().replace("演员数量:", ""))
+ }
+ movies.append(movie)
+
+final_data = {
+ "data_id": data_id,
+ "movies": movies
+}
+with open("movies.json", "w", encoding="utf-8") as f:
+ json.dump(final_data, f, ensure_ascii=False, indent=4)
+
+print("爬取完成,已生成movies.json和movies.html")
\ No newline at end of file
diff --git a/reviews.json b/reviews.json
new file mode 100644
index 0000000..161ff31
--- /dev/null
+++ b/reviews.json
@@ -0,0 +1,7 @@
+[
+ {"id": 1, "text": "外卖小哥送得超快,餐盒还是热的,炸鸡酥脆多汁,酸辣粉也很正宗,分量足,五星好评!"},
+ {"id": 2, "text": "等了一个半小时才送到,汤全洒了,面坨成一坨,联系客服也不回,太让人失望了。"},
+ {"id": 3, "text": "奶茶是用料很扎实的现煮茶,珍珠Q弹有嚼劲,配送员态度也好,下次还会再点。"},
+ {"id": 4, "text": "配送速度一般,但披萨味道不错,芝士拉丝效果好,性价比高,值得推荐。"},
+ {"id": 5, "text": "点的麻辣烫食材不新鲜,有股怪味,吃完拉肚子,商家推卸责任,再也不点了。"}
+]