From d8635023a1ed5a98aed4a3c7114a4aa2e6ef0b76 Mon Sep 17 00:00:00 2001
From: 2509165020 <2509165020@student.edu.cn>
Date: Tue, 31 Mar 2026 11:29:26 +0800
Subject: [PATCH] =?UTF-8?q?Python=E6=96=87=E4=BB=B6=E6=93=8D=E4=BD=9C?=
=?UTF-8?q?=E5=AE=8C=E5=85=A8=E6=8C=87=E5=8D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
260331+2509165020 作业/movies.csv | 1 +
260331+2509165020 作业/movies.json | 1 +
260331+2509165020 作业/movies.txt | 10 +++++++++
260331+2509165020 作业/test1.py | 31 ++++++++++++++++++++++++++++
260331+2509165020 作业/test2.py | 27 ++++++++++++++++++++++++
260331+2509165020 作业/test3.py | 33 ++++++++++++++++++++++++++++++
6 files changed, 103 insertions(+)
create mode 100644 260331+2509165020 作业/movies.csv
create mode 100644 260331+2509165020 作业/movies.json
create mode 100644 260331+2509165020 作业/movies.txt
create mode 100644 260331+2509165020 作业/test1.py
create mode 100644 260331+2509165020 作业/test2.py
create mode 100644 260331+2509165020 作业/test3.py
diff --git a/260331+2509165020 作业/movies.csv b/260331+2509165020 作业/movies.csv
new file mode 100644
index 0000000..91a10fe
--- /dev/null
+++ b/260331+2509165020 作业/movies.csv
@@ -0,0 +1 @@
+排名,中文名,英文名,评分
diff --git a/260331+2509165020 作业/movies.json b/260331+2509165020 作业/movies.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/260331+2509165020 作业/movies.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/260331+2509165020 作业/movies.txt b/260331+2509165020 作业/movies.txt
new file mode 100644
index 0000000..132612c
--- /dev/null
+++ b/260331+2509165020 作业/movies.txt
@@ -0,0 +1,10 @@
+肖申克的救赎
+霸王别姬
+泰坦尼克号
+阿甘正传
+千与千寻
+美丽人生
+星际穿越
+这个杀手不太冷
+盗梦空间
+楚门的世界
diff --git a/260331+2509165020 作业/test1.py b/260331+2509165020 作业/test1.py
new file mode 100644
index 0000000..15bab04
--- /dev/null
+++ b/260331+2509165020 作业/test1.py
@@ -0,0 +1,31 @@
+import requests
+import re
+
+headers = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
+}
+
+url = "https://movie.douban.com/top250"
+
+try:
+ response = requests.get(url=url, headers=headers, timeout=10)
+ response.raise_for_status()
+ page_source = response.text
+ print("页面请求成功!")
+except Exception as e:
+ print(f"请求失败:{e}")
+ exit()
+
+pattern = re.compile(r'([^&]+?)', re.S)
+movie_names = pattern.findall(page_source)
+
+target_names = movie_names[:10]
+with open("movies.txt", "w", encoding="utf-8") as f:
+ for name in target_names:
+ f.write(name + "\n")
+
+print(f"成功爬取{len(target_names)}部电影名,已保存到movies.txt!")
+
+print("\n爬取结果预览:")
+for i, name in enumerate(target_names, 1):
+ print(f"{i}. {name}")
\ No newline at end of file
diff --git a/260331+2509165020 作业/test2.py b/260331+2509165020 作业/test2.py
new file mode 100644
index 0000000..a87d9fa
--- /dev/null
+++ b/260331+2509165020 作业/test2.py
@@ -0,0 +1,27 @@
+import requests
+import re
+import csv
+
+url = "https://movie.douban.com/top250"
+headers = {"User-Agent": "Mozilla/5.0"}
+resp = requests.get(url, headers=headers)
+html = resp.text
+
+pattern = re.compile(
+ r'(\d+).*?'
+ r'(.*?).*?'
+ r'(.*?).*?'
+ r'(.*?)',
+ re.S
+)
+movies = pattern.findall(html)[:10]
+
+with open("movies.csv", "w", encoding="utf-8-sig", newline="") as f:
+ w = csv.writer(f)
+ w.writerow(["排名", "中文名", "英文名", "评分"])
+ for m in movies:
+ rank, title, en, rating = m
+ en = en.replace("/", "").strip()
+ w.writerow([rank, title, en, rating])
+
+print("已保存到 movies.csv")
\ No newline at end of file
diff --git a/260331+2509165020 作业/test3.py b/260331+2509165020 作业/test3.py
new file mode 100644
index 0000000..12695ce
--- /dev/null
+++ b/260331+2509165020 作业/test3.py
@@ -0,0 +1,33 @@
+import requests
+import re
+import json
+
+url = "https://movie.douban.com/top250"
+headers = {"User-Agent": "Mozilla/5.0"}
+resp = requests.get(url, headers=headers)
+html = resp.text
+
+pattern = re.compile(
+ r'(\d+).*?'
+ r'(.*?).*?'
+ r'(.*?).*?'
+ r'(.*?).*?'
+ r'(.*?)?',
+ re.S
+)
+movies = pattern.findall(html)[:10]
+
+result = []
+for m in movies:
+ result.append({
+ "rank": int(m[0]),
+ "title": m[1],
+ "en_title": m[2].replace("/", "").strip(),
+ "rating": m[3],
+ "quote": m[4] if len(m) > 4 else ""
+ })
+
+with open("movies.json", "w", encoding="utf-8") as f:
+ json.dump(result, f, ensure_ascii=False, indent=4)
+
+print("已保存到 movies.json")
\ No newline at end of file