From 3547566c4bf5c96a84043aa46327e702083aea80 Mon Sep 17 00:00:00 2001 From: 2509165046 <2509165046@student.edu.cn> Date: Thu, 2 Jul 2026 23:58:26 +0800 Subject: [PATCH] 4-2-image-labeling --- data/images/标注练习1.jpg | Bin 0 -> 41330 bytes data/reviews.json | 7 ++ 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/q3_1/q3_1_image_label.zip | Bin 0 -> 893 bytes q3/q3_2/q3_2_takeout_reviews.json | 1 + q3/q3_3_质量自评.md | 13 ++++ q4/q4_1/q4_1.py | 33 ++++++++++ q4/q4_1/q4_1_bar.png | Bin 0 -> 15637 bytes q4/q4_2/q4_2.py | 24 +++++++ q4/q4_2/q4_2_scatter.png | Bin 0 -> 30633 bytes q4/q4_3a/q4_3a.py | 19 ++++++ q4/q4_3a/q4_3a_hist.png | Bin 0 -> 19044 bytes q4/q4_3b/q4_3b.py | 19 ++++++ q4/q4_3b/q4_3b_hist.png | Bin 0 -> 19691 bytes 17 files changed, 428 insertions(+) create mode 100644 data/images/标注练习1.jpg create mode 100644 data/reviews.json 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 create mode 100644 q3/q3_1/q3_1_image_label.zip create mode 100644 q3/q3_2/q3_2_takeout_reviews.json create mode 100644 q3/q3_3_质量自评.md create mode 100644 q4/q4_1/q4_1.py create mode 100644 q4/q4_1/q4_1_bar.png create mode 100644 q4/q4_2/q4_2.py create mode 100644 q4/q4_2/q4_2_scatter.png create mode 100644 q4/q4_3a/q4_3a.py create mode 100644 q4/q4_3a/q4_3a_hist.png create mode 100644 q4/q4_3b/q4_3b.py create mode 100644 q4/q4_3b/q4_3b_hist.png diff --git a/data/images/标注练习1.jpg b/data/images/标注练习1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce148356904c64c5bed145f805154454465a3563 GIT binary patch literal 41330 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≶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 CCZ5#* literal 0 HcmV?d00001 diff --git a/data/reviews.json b/data/reviews.json new file mode 100644 index 0000000..161ff31 --- /dev/null +++ b/data/reviews.json @@ -0,0 +1,7 @@ +[ + {"id": 1, "text": "外卖小哥送得超快,餐盒还是热的,炸鸡酥脆多汁,酸辣粉也很正宗,分量足,五星好评!"}, + {"id": 2, "text": "等了一个半小时才送到,汤全洒了,面坨成一坨,联系客服也不回,太让人失望了。"}, + {"id": 3, "text": "奶茶是用料很扎实的现煮茶,珍珠Q弹有嚼劲,配送员态度也好,下次还会再点。"}, + {"id": 4, "text": "配送速度一般,但披萨味道不错,芝士拉丝效果好,性价比高,值得推荐。"}, + {"id": 5, "text": "点的麻辣烫食材不新鲜,有股怪味,吃完拉肚子,商家推卸责任,再也不点了。"} +] 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/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/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/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