关于 Python 学习,网上最不缺的就是资料,但最缺的是一条清晰的路线。很多零基础的读者下载了 Python、收藏了一堆教程,结果今天看变量、明天看函数,后天又跑去学 Django,来回横跳了大半个月,连一个完整的爬虫都写不出来。这篇文章会以“Python 基础 → 网络爬虫 → 数据分析”为主线,整理一份可以直接照着执行的路线,并从环境搭建开始,逐步带你写出一个能抓网页、能存数据、能出图表的完整项目。无论你是想转行做数据相关的工作,还是准备把 Python 当作自动化办公的工具,这条路线都值得参考。
本文适合完全没有编程经验的小白,也适合学过语法但缺少实战项目的读者。你会掌握几个关键能力:独立安装和配置 Python 环境,掌握变量、函数、文件操作等核心语法,用 requests + BeautifulSoup 编写爬虫抓取网页数据,再使用 pandas + matplotlib 完成数据清洗、统计和可视化。这套技能组合在目前的企业招聘和日常工作中出现频率非常高,也是 Python 生态里最容易形成正反馈的学习方向。
1. 为什么把爬虫和数据分析放在一起学
先回答一个很多新手都会问的问题:Python 能做的事情那么多,Web 开发、自动化运维、人工智能、量化交易,为什么第一站要选爬虫和数据分析?
原因是这两个方向能最快形成“输入 → 处理 → 输出”的完整闭环。爬虫负责获取数据,相当于把外部世界的信息变成结构化文件;数据分析负责处理这些数据,从中得出有价值的结论。整个过程都用 Python 实现,语法覆盖面广,学习过程中你会自然接触到字符串处理、列表与字典、循环、函数、异常处理、文件读写、第三方库安装这些核心知识点,而且每完成一步都能看到实际成果。
从就业和实际应用的角度来看,数据分析相关岗位对 Python 的要求通常集中在三块:数据采集能力、数据清洗能力、数据可视化能力。爬虫解决第一块,pandas 解决第二块,matplotlib 解决第三块。把这套流程走通之后,再回头看 Python 的高级语法、面向对象、装饰器、多线程,理解成本会低很多。反过来,如果一上来就啃编程语言底层原理,很容易在枯燥的概念里失去动力。
还有一个更现实的原因:这个学习路线对电脑配置要求低,不需要准备服务器,不需要安装大型开发工具,一台普通笔记本就足够。接下来就从环境搭建开始,先把基础打牢。
2. 环境搭建与工具准备
很多初学者学 Python 学的不是语法,而是环境配置。不同操作系统、不同 Python 版本、不同 IDE 的组合会让新手眼花缭乱。下面按照最常见的场景逐步说明。
2.1 Python 解释器的安装
Python 是一个解释型语言,代码需要由解释器逐行执行。所以第一步是在电脑上安装 Python 解释器。
Windows 用户建议直接到 Python 官网下载安装包。安装时有一个非常关键的勾选项:Add Python to PATH,一定要勾选。这个选项会把 Python 命令自动加入系统环境变量,否则后续在命令行里执行python会提示“不是内部或外部命令”。如果安装时忘记勾选,也可以手动添加环境变量,但远不如一开始勾选省事。
macOS 用户推荐使用 Homebrew 安装,也可以从官网下载 pkg 安装包。Linux 用户建议使用系统包管理器安装,不过要留意部分 Linux 发行版自带的是 Python 2 或者较旧的 Python 3 版本,安装后建议用python3 --version确认一下。
版本选择方面,目前主流是 Python 3.10 到 3.12 之间的版本。新版语法更友好,第三方库的兼容性也更好。不建议选择 Python 2.x,这个版本已经停止维护,教程和第三方库基本都不会再兼容。
安装完成后,打开命令行工具,执行下面命令验证:
python --version如果输出类似Python 3.10.12的信息,说明安装成功。如果没有输出或者提示命令找不到,需要回到上一步检查环境变量配置。
2.2 IDE 选择与 VSCode 配置
IDE 的选择会影响学习体验。对新手来说,VSCode 是当前性价比最高的选择,免费、轻量、插件生态丰富。PyCharm 功能强大,但社区版缺少部分专业功能,专业版需要付费,对刚入门的读者来说有些过重。
VSCode 安装 Python 插件后,就具备了代码补全、语法检查、调试等核心能力。在 VSCode 的扩展市场搜索Python,安装微软官方发布的插件即可。安装完成后,按下Ctrl + Shift + P(macOS 是Cmd + Shift + P),输入Python: Select Interpreter,选择刚才安装的 Python 解释器。
然后新建一个文件,命名为hello.py,写入下面的代码:
# 文件路径:hello.py print("Hello, Python!")按F5或者点击右上角的运行按钮,下方终端会输出:
Hello, Python!看到这个输出,说明开发环境已经打通。后面的所有代码都可以在 VSCode 里编写和运行。
2.3 虚拟环境与依赖安装
Python 项目通常依赖很多第三方库。不同项目可能依赖同一个库的不同版本,如果全部安装到全局环境,很容易出现版本冲突。虚拟环境就是为每个项目单独创建一个隔离的 Python 环境,这是工程开发的基本习惯,建议从第一天就开始使用。
在项目根目录下打开终端,执行:
python -m venv venv这条命令会在当前目录生成一个venv文件夹。接下来激活虚拟环境,Windows 执行:
venv\Scripts\activatemacOS / Linux 执行:
source venv/bin/activate激活后,命令行前面会出现(venv)前缀。后续使用pip install安装的包都会进入这个虚拟环境,不会影响系统全局。当项目不需要时,可以直接删除venv文件夹,或者执行deactivate退出环境。本文实战项目需要安装以下依赖,在虚拟环境中统一执行:
pip install requests beautifulsoup4 pandas matplotlib openpyxlrequests:发送 HTTP 请求,获取网页内容。beautifulsoup4:解析 HTML,提取目标数据。pandas:读取、清洗、统计分析数据。matplotlib:绘制图表。openpyxl:pandas 读写 Excel 文件时的底层引擎。
依赖安装速度较慢时可以切换到国内镜像源,这里提供一个通用做法:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests beautifulsoup4 pandas matplotlib openpyxl3. Python 核心语法速览
爬虫和数据分析项目虽然会用到大量第三方库,但底层逻辑仍然是 Python 基础语法。花半小时把这部分内容过一遍,后面看代码就不会发怵。
3.1 变量与四大常用数据类型
Python 定义变量不需要声明类型,直接赋值即可。字符串、整数、浮点数、布尔值是最基础的四种类型。
name = "Python" # 字符串 version = 3.10 # 浮点数 year = 2025 # 整数 is_popular = True # 布尔值 print(name, version, year, is_popular)爬虫和数据分析中,接触最多的数据结构是列表、字典、元组和集合。列表用方括号表示,可以存储一组有序数据;字典用花括号表示,以键值对形式存储数据。
# 列表:存储电影评分 scores = [9.7, 9.6, 9.5, 9.4] # 字典:存储一部电影的完整信息 movie = { "title": "肖申克的救赎", "year": 1994, "rating": 9.7, "countries": ["美国"] } print(movie["title"]) print(scores[0])列表通过下标访问元素,下标从 0 开始;字典通过键访问值。实际爬虫抓取的数据,最终就是为了整理成这种结构,方便后续用 pandas 处理。
3.2 流程控制语句
流程控制包括条件判断和循环。条件判断用if/elif/else,循环常用for遍历列表或字典。
scores = [9.7, 9.6, 9.5, 9.4] for score in scores: if score >= 9.5: print(f"高分电影:{score}") else: print(f"普通分数:{score}")这里用到了 f-string 字符串格式化,在字符串前加f,然后用花括号插入变量,是 Python 3.6 以后的推荐写法。爬虫翻页时,最常用的循环方式是根据页码拼接 URL:
for page in range(10): start = page * 25 url = f"https://movie.douban.com/top250?start={start}" print(url)range(10)生成 0 到 9 的整数序列,start每页递增 25,正好对应豆瓣 Top250 的分页规则。
3.3 函数与异常处理
函数是用来封装重复代码的。把爬虫的某一步操作写成函数,可以让代码结构更清晰,也方便重复调用。
def get_page_title(url): """获取网页标题""" import requests resp = requests.get(url) resp.encoding = "utf-8" return resp.text[:100] title = get_page_title("https://example.com") print(title)爬虫过程中,网络波动、页面结构变化、编码错误都可能引发异常。如果不对异常做处理,程序会直接崩溃,导致前面抓取的数据全部丢失。使用try / except可以捕获异常并继续执行:
try: resp = requests.get("https://example.com", timeout=10) resp.raise_for_status() except requests.RequestException as e: print(f"请求失败:{e}")raise_for_status()会在 HTTP 状态码为 4xx 或 5xx 时抛出异常,避免拿到错误页面后继续解析。网络请求的超时时间一定要设置,否则程序可能长时间卡住。
4. 网络爬虫实战:抓取豆瓣电影 Top250
基础语法掌握以后,就可以开始第一个完整项目了。这个项目的目标是从豆瓣电影 Top250 抓取电影名称、评分、评价人数、经典台词、年份和地区等信息,保存为 CSV 文件。项目本身非常经典,网上几乎每个 Python 学习者都写过,非常适合作为第一个爬虫练手项目。
4.1 爬虫原理与合规说明
爬虫的基本流程是:向目标服务器发送 HTTP 请求,服务器返回网页源码,再用解析库提取需要的信息。看起来简单,但实际操作中有几个注意点。
第一,请求头要模拟真实浏览器。很多网站会检查User-Agent,如果直接使用 Python 默认的请求头,服务器可能返回 418 或 403 错误。第二,请求频率要控制。爬虫只是抓取公开数据用于学习,不能对目标网站造成访问压力。第三,要尊重网站的robots.txt协议和版权规定,本文示例仅供学习爬虫原理,请勿用于商业用途。
在代码中,我们使用requests发送请求,使用BeautifulSoup解析页面。这两者的配合是目前 Python 爬虫最基础的组合。
4.2 抓取单页数据的核心代码
先来分析页面结构。豆瓣 Top250 的列表页中,每部电影位于ol.grid_view下的li标签中。每一条li包含了排名、封面、片名、评分、评价人数、经典台词、年份/地区/类型等信息。
下面这段代码演示如何解析第一页的 25 条电影数据:
# 文件路径:crawler.py import requests from bs4 import BeautifulSoup def fetch_page(url): """发送请求并返回解析后的 BeautifulSoup 对象""" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } resp = requests.get(url, headers=headers, timeout=10) resp.raise_for_status() resp.encoding = "utf-8" return BeautifulSoup(resp.text, "html.parser") def parse_movies(soup): """从 BeautifulSoup 对象中提取电影信息""" movies = [] items = soup.select("ol.grid_view li") for item in items: rank = item.select_one(".pic em").get_text() title = item.select_one(".hd .title").get_text() rating = item.select_one(".rating_num").get_text() quote = item.select_one(".quote .inq") quote = quote.get_text() if quote else "" info = item.select_one(".hd .other").get_text().strip() movies.append({ "rank": rank, "title": title, "rating": rating, "quote": quote, "other": info }) return movies if __name__ == "__main__": soup = fetch_page("https://movie.douban.com/top250?start=0") for movie in parse_movies(soup): print(movie)代码里用到了select_one和select两个方法。select返回符合选择器条件的所有元素列表,select_one返回第一个匹配元素。.get_text()用于提取标签中的文本内容,get("href")用于提取属性值。
运行这段代码前,请确认已经安装requests和beautifulsoup4。运行后终端会输出 25 条电影信息,每条是一个字典。如果输出为空,大概率是页面结构发生了变化,或者请求被反爬拦截,可以先将resp.status_code打印出来检查。
4.3 实现翻页并保存为 CSV
单页解析没问题后,接下来实现翻页。Top250 总共 10 页,每页 25 条,URL 参数start从 0 开始,每次 +25。把每页的数据追加到一个列表中,最后用csv模块写入文件。
# 文件路径:crawler.py(完整版) import csv import time import requests from bs4 import BeautifulSoup def fetch_page(url): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } resp = requests.get(url, headers=headers, timeout=10) resp.raise_for_status() resp.encoding = "utf-8" return BeautifulSoup(resp.text, "html.parser") def parse_movies(soup): movies = [] items = soup.select("ol.grid_view li") for item in items: rank = item.select_one(".pic em").get_text() title = item.select_one(".hd .title").get_text() rating = item.select_one(".rating_num").get_text() quote = item.select_one(".quote .inq") quote = quote.get_text() if quote else "" other = item.select_one(".hd .other").get_text().strip() movies.append({ "rank": rank, "title": title, "rating": rating, "quote": quote, "other": other }) return movies def main(): all_movies = [] for page in range(10): start = page * 25 url = f"https://movie.douban.com/top250?start={start}" print(f"正在抓取第 {page + 1} 页:{url}") soup = fetch_page(url) movies = parse_movies(soup) all_movies.extend(movies) time.sleep(2) # 请求间隔 2 秒,避免对服务器造成压力 with open("douban_top250.csv", "w", newline="", encoding="utf-8-sig") as f: writer = csv.DictWriter(f, fieldnames=["rank", "title", "rating", "quote", "other"]) writer.writeheader() writer.writerows(all_movies) print(f"抓取完成,共 {len(all_movies)} 条数据") if __name__ == "__main__": main()这里有几个细节需要注意。encoding="utf-8-sig"可以让 CSV 文件在 Excel 中打开时中文不乱码。newline=""是为了避免 Windows 系统下 CSV 每两行之间出现空行。time.sleep(2)是爬虫的基本礼仪,限制请求频率,降低被封 IP 的风险。
4.4 运行与验证
在项目目录下执行:
python crawler.py程序会逐页打印抓取进度,大约 20 秒后结束。此时项目目录下会生成douban_top250.csv文件,用 Excel 打开后可以看到 250 条电影数据。检查第一行应该是表头,最后一行排名应该是 250。
到这里,爬虫部分就完成了。下面进入数据分析环节。
5. 数据分析实战:用 Pandas 分析电影数据
数据抓下来只是第一步,更有价值的是从数据中发现规律。接下来使用pandas读取 CSV 文件,完成数据清洗、统计和可视化。
5.1 读取数据并查看基本情况
用 pandas 读取 CSV 只需要一行代码:
# 文件路径:analysis.py import pandas as pd df = pd.read_csv("douban_top250.csv") print(df.head()) print(df.info()) print(df.describe())df.head()默认显示前 5 行,df.info()显示每列的数据类型和非空值数量,df.describe()对数值列输出统计信息。运行后可以直观看到,rating列的平均值、最小值、最大值等指标都在这份输出里。
爬虫抓取的数据往往存在缺失值或类型问题。比如quote列可能有空值,year字段需要从other列中提取。数据清洗的目的就是把这些不规整的数据处理成适合分析的格式。
5.2 数据清洗与特征提取
当前 CSV 里并没有单独的年份字段,年份信息混杂在other列中,例如/ 1994 / 美国 / 犯罪 剧情。我们可以用正则表达式提取年份,并新增一列。
df["year"] = df["other"].str.extract(r"(\d{4})").astype("Int64")这条语句使用正则\d{4}从文本中提取 4 位数字作为年份,astype("Int64")把列转换为整数类型,缺失值保留为pd.NA。
接下来统计评分最高的 10 部电影:
top10 = df.nlargest(10, "rating") print(top10[["rank", "title", "rating", "year"]])nlargest是 pandas 内置方法,按指定列降序取前 N 条。如果发现多条并列分数,可以调节参数,比如按评价人数二次排序。
5.3 分组统计与可视化
分组统计是数据分析最常用的操作。下面按年份区间统计电影数量,看看哪个年代的佳片最多:
df["decade"] = (df["year"] // 10 * 10).astype("Int64") decade_count = df.groupby("decade").size().reset_index(name="count") print(decade_count)(df["year"] // 10 * 10)把年份映射到所属年代,比如 1994 变成 1990。groupby按年代分组,size()统计数量。输出结果通常在 1990 年代和 2010 年代会出现两个高峰。
最后用 matplotlib 把评分分布画成直方图,同时用柱状图展示各年代电影数量:
import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"] = ["Microsoft YaHei"] plt.rcParams["axes.unicode_minus"] = False fig, axes = plt.subplots(1, 2, figsize=(12, 4)) axes[0].hist(df["rating"].dropna(), bins=20, edgecolor="black", alpha=0.7) axes[0].set_title("评分分布") axes[0].set_xlabel("评分") axes[0].set_ylabel("电影数量") decade_count_sorted = decade_count.dropna().sort_values("decade") axes[1].bar(decade_count_sorted["decade"].astype(str), decade_count_sorted["count"]) axes[1].set_title("各年代电影数量") axes[1].set_xlabel("年代") axes[1].set_ylabel("数量") plt.tight_layout() plt.savefig("movie_analysis.png", dpi=150) plt.show()plt.rcParams用来设置中文字体。不同操作系统字体名称不同,Windows 常用Microsoft YaHei,macOS 可以用Arial Unicode MS,Linux 可以用WenQuanYi Zen Hei。如果不设置,图表里的中文会显示成方块。
运行analysis.py后,项目目录下会生成movie_analysis.png图片。从图表中可以直观看到:豆瓣 Top250 的电影评分高度集中在 8.5 到 9.2 分之间,高分电影分布并不均匀;从年代来看,1990 年代和 2010 年代产出的高分电影数量更多。这个结论虽然受样本选择影响,但已经体现出完整的数据分析思路:采集、清洗、统计、可视化。
5.4 数据分析完整代码
为了方便直接运行,这里给出analysis.py的完整版本:
# 文件路径:analysis.py import pandas as pd import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"] = ["Microsoft YaHei"] plt.rcParams["axes.unicode_minus"] = False df = pd.read_csv("douban_top250.csv") df["year"] = df["other"].str.extract(r"(\d{4})").astype("Int64") top10 = df.nlargest(10, "rating") print("评分最高的 10 部电影:") print(top10[["rank", "title", "rating", "year"]]) df["decade"] = (df["year"] // 10 * 10).astype("Int64") decade_count = df.groupby("decade").size().reset_index(name="count") print("\n各年代电影数量:") print(decade_count) fig, axes = plt.subplots(1, 2, figsize=(12, 4)) axes[0].hist(df["rating"].dropna(), bins=20, edgecolor="black", alpha=0.7) axes[0].set_title("评分分布") axes[0].set_xlabel("评分") axes[0].set_ylabel("电影数量") decade_count_sorted = decade_count.dropna().sort_values("decade") axes[1].bar(decade_count_sorted["decade"].astype(str), decade_count_sorted["count"]) axes[1].set_title("各年代电影数量") axes[1].set_xlabel("年代") axes[1].set_ylabel("数量") plt.tight_layout() plt.savefig("movie_analysis.png", dpi=150) plt.show()6. 常见报错与排查思路
初学者做爬虫和数据分析时,几乎一定会遇到各种报错。下面整理高频问题,按“现象 → 原因 → 解决”的思路说明。
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
提示'pip' 不是内部或外部命令 | Python 未加入 PATH 或未正确安装 | 重新安装并勾选 Add Python to PATH,或手动配置环境变量 |
使用python进入的不是自己安装的版本 | 多个 Python 解释器并存 | 用where python或which python检查路径,在 VSCode 中指定解释器 |
ModuleNotFoundError: No module named 'requests' | 包未安装或虚拟环境未激活 | 激活虚拟环境后执行pip install requests |
| 爬虫返回 403 或 418 | 请求头缺少 User-Agent 或被服务器拦截 | 添加浏览器 User-Agent,降低请求频率,必要时添加 Cookie |
| CSV 文件用 Excel 打开中文乱码 | 写入时编码不是 utf-8-sig | 使用encoding="utf-8-sig"写入 |
| 图表中文显示为方块 | 系统缺少对应中文字体,或未设置字体 | 设置plt.rcParams["font.sans-serif"]为系统中文字体 |
pandas读取 CSV 时某些列变成NaN | 原始数据本身有空值 | 使用dropna()或fillna()处理缺失值 |
| 安装 pandas 速度慢或超时 | 默认 PyPI 源在国外 | 使用国内镜像源安装 |
如果请求被反爬拦截,不要一开始就想着伪装成高级浏览器。先检查自己的User-Agent是否正确,请求间隔是否足够。大多数个人学习场景下,只要代码写规范,服务器不会过于严格。学习爬虫的目的是理解 HTTP 请求和数据解析原理,不是暴力抓取,更不是攻击目标网站,这一点务必清楚。
7. 工程化建议与新手避坑指南
很多教程只会教你写出能运行的代码,但实际工作中的 Python 项目还需要考虑可维护性和可靠性。下面这些建议来自真实项目经验,对你后续进步很有帮助。
7.1 项目结构规划
不要把所有代码写在一个文件里。即使是一个小项目,也建议按功能拆分:
python-learning/ ├── crawler.py # 爬虫模块 ├── analysis.py # 数据分析模块 ├── requirements.txt # 依赖清单 ├── venv/ # 虚拟环境 └── douban_top250.csv # 爬取结果requirements.txt可以通过pip freeze > requirements.txt自动生成,别人拿到项目后执行pip install -r requirements.txt就能复现环境。这是团队协作的基本要求。
7.2 依赖与版本管理
第三方库安装要克制,不要一次性安装一堆用不到的包。每个包都会引入新的依赖和潜在的不兼容问题。写 requirements.txt 时建议锁定大版本,例如:
requests==2.31.0 beautifulsoup4==4.12.3 pandas==2.1.4 matplotlib==3.8.2 openpyxl==3.1.2注意不同 Python 版本支持的 pandas 版本不同。如果安装失败,可以降低 pandas 版本,或者升级 Python 解释器。
7.3 编码与中文处理
Python 2 时代最头疼的就是编码问题,Python 3 后字符串默认 UTF-8 编码,情况好了很多。但写文件时仍然要明确指定编码:读取网页时设置resp.encoding = "utf-8",写 CSV 时设置encoding="utf-8-sig",写 JSON 时建议设置ensure_ascii=False。这些细节能避免 90% 的中文乱码问题。
7.4 异常处理与日志
爬虫代码中的异常处理不能只是打印一下就完事。生产环境中更推荐记录日志。Python 自带的logging模块就够用:
import logging logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) logger = logging.getLogger(__name__)用logger.info()代替print(),日志会带上时间和级别,排查问题时能快速定位是哪个环节出错。
7.5 数据质量验证
数据分析结果是否可靠,取决于数据质量。拿到 CSV 后,第一件事不是画图,而是检查数据:
- 总行数是否符合预期。
- 关键列是否有缺失值。
- 是否有重复行。
- 数值列的类型是否正确。
- 文本列是否包含异常字符。
在真实项目中,数据清洗往往占整个分析流程的一半以上时间。不要小看这一步。
7.6 爬虫开发的安全边界
爬虫是 Python 的重要应用方向,但使用边界必须清晰。采集公开数据时,注意以下红线:
- 只采集公开、合法、允许访问的数据。
- 遵守目标网站的 robots.txt 协议和用户协议。
- 控制请求频率和并发数。
- 不采集个人隐私、商业机密、未公开数据。
- 学习项目不用于商业用途。
本文的豆瓣示例仅用于技术学习,读者在实际开发中请务必保持理性克制。
8. 七天学习节奏规划
很多人问零基础七天能不能学会 Python。这个问题很难给出绝对答案,因为“学会”的定义因人而异。如果你能每天投入 3 到 4 小时,按照下面的节奏走,七天足够完成一个能写在简历上的完整实战项目。
第 1 天:完成环境搭建,学习变量、数据类型、运算符、字符串操作。目标:能用 Python 写小计算器。
第 2 天:学习列表、字典、条件判断、循环,完成一个简单的成绩统计程序。
第 3 天:学习函数、文件读写、异常处理,完成一个读取文本文件并统计词频的小工具。
第 4 天:学习 requests 和 BeautifulSoup 的基本用法,抓取单页网页数据。
第 5 天:完成 Top250 爬虫项目,加入翻页、请求间隔、CSV 存储。
第 6 天:学习 pandas 的 DataFrame 操作,完成数据读取、清洗、分组统计。
第 7 天:学习 matplotlib 可视化,完成数据分析报告和图表输出。
按照这个节奏,最后一天结束时你手里会有两个完整的项目:一个能自动抓取网页数据的爬虫,一个能对数据进行统计分析的脚本。之后可以根据兴趣选择继续深入的方向:如果想做 Web 开发,可以学习 Flask 或 FastAPI;如果想做数据科学,可以继续学习 NumPy、scikit-learn;如果想做复杂爬虫,可以研究 Scrapy 框架和请求代理池。
学习编程最重要的不是看多少视频、收藏多少教程,而是亲手写出代码、亲手解决报错。这篇文章里的代码你可以直接复制运行,但更建议你逐行敲一遍。遇到问题时先尝试自己阅读报错信息,再搜索解决方案,这个排查过程本身就是编程能力提升最快的时候。
如果这篇文章对你有所帮助,建议收藏备用。后续遇到环境问题、爬虫解析问题、pandas 用法问题,都可以回来翻阅对应章节。祝你在 Python 学习的路上少走弯路,早日写出属于自己的第一个完整项目。