From 64b551a31638f550408c384f19439838ae4546eb Mon Sep 17 00:00:00 2001
From: 2509165020 <2509165020@student.edu.cn>
Date: Thu, 2 Apr 2026 15:51:57 +0800
Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F?=
=?UTF-8?q?=EF=BC=9A=E7=88=AC=E8=99=AB=E5=86=85=E5=AE=B9=E6=8F=90=E5=8F=96?=
=?UTF-8?q?=E5=88=A9=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
260402+2509165020/1.py | 69 +++++++++++++++++++++++++++++++++++
260402+2509165020/movies.csv | 1 +
260402+2509165020/movies.json | 1 +
260402+2509165020/movies.txt | 0
4 files changed, 71 insertions(+)
create mode 100644 260402+2509165020/1.py
create mode 100644 260402+2509165020/movies.csv
create mode 100644 260402+2509165020/movies.json
create mode 100644 260402+2509165020/movies.txt
diff --git a/260402+2509165020/1.py b/260402+2509165020/1.py
new file mode 100644
index 0000000..18c8524
--- /dev/null
+++ b/260402+2509165020/1.py
@@ -0,0 +1,69 @@
+import requests
+import re
+import csv
+import json
+
+url = "https://movie.douban.com/top250"
+headers = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
+}
+
+response = requests.get(url, headers=headers)
+html = response.text
+
+pattern = re.compile(
+ r'(\d+).*?'
+ r'(.*?).*?'
+ r'(.*?).*?'
+ r'(.*?).*?'
+ r'(\d+人评价).*?'
+ r'(.*?)?',
+ re.S
+)
+
+movies = pattern.findall(html)[:10]
+
+movie_list = []
+for m in movies:
+ rank = m[0]
+ title = m[1]
+ en_title = m[2].replace("/", "").strip()
+ rating = m[3]
+ people = m[4]
+ quote = m[5] if len(m) > 5 else ""
+ movie_list.append({
+ "rank": int(rank),
+ "title": title,
+ "en_title": en_title,
+ "rating": rating,
+ "people": people,
+ "quote": quote
+ })
+
+with open("movies.txt", "w", encoding="utf-8") as f:
+ for m in movie_list:
+ f.write(m["title"] + " | " + m["quote"] + "\n")
+print("✅ 练习1完成:已保存中文名+评语到 movies.txt")
+
+with open("movies.csv", "w", encoding="utf-8-sig", newline="") as f:
+ writer = csv.writer(f)
+
+ writer.writerow(["排名", "中文名", "英文名", "评分", "评价人数", "经典评语"])
+ for m in movie_list:
+ writer.writerow([m["rank"], m["title"], m["en_title"], m["rating"], m["people"], m["quote"]])
+print("✅ 练习2完成:已保存到 movies.csv")
+
+with open("movies.json", "w", encoding="utf-8") as f:
+ json.dump(movie_list, f, ensure_ascii=False, indent=4)
+print("✅ 练习3完成:已保存到 movies.json")
+
+print("\n--- 练习4:筛选评分>9.5的电影 ---")
+with open("movies.csv", "r", encoding="utf-8-sig") as f:
+ reader = csv.DictReader(f)
+ for row in reader:
+ if float(row["评分"]) > 9.5:
+ print(row)
+
+print("\n--- 练习5:JSON统计 ---")
+with open("movies.json", "r", encoding="utf-8") as f:
+ data = json.load(f)
diff --git a/260402+2509165020/movies.csv b/260402+2509165020/movies.csv
new file mode 100644
index 0000000..dc55a4d
--- /dev/null
+++ b/260402+2509165020/movies.csv
@@ -0,0 +1 @@
+排名,中文名,英文名,评分,评价人数,经典评语
diff --git a/260402+2509165020/movies.json b/260402+2509165020/movies.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/260402+2509165020/movies.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/260402+2509165020/movies.txt b/260402+2509165020/movies.txt
new file mode 100644
index 0000000..e69de29