L14. 核心模块开发 (1):数据层的地基
Vibe Coding 宣言:Garbage In, Garbage Out (垃圾进,垃圾出)。
0. 为什么这一课至关重要? (Why It Matters)
- 数据的源头:一切软件都是为了处理数据。如果源头是脏的,后面的算法再牛逼也没用。
- 爬虫的江湖:你不需要成为爬虫大师,但你得知道怎么把别人的数据变成你的。
- 清洗的艺术:现实世界的数据是丑陋的(乱码、空值、格式不一)。Pandas 是你的美颜相机。
1. 目标 (Goal)
学会使用 Requests/BeautifulSoup 抓取数据,并用 Pandas 进行清洗和格式化。
2. 核心概念/装备/指令 (The Core)
2.1 抓取 (The Claw)
- Requests:模拟浏览器发请求。
requests.get(url) - BeautifulSoup:解析网页 HTML。
soup.find('div', class_='price') - Selenium/Playwright:如果网页是动态加载的(比如 JS 渲染),就要用这个。
2.2 清洗 (The Filter)
- Pandas:Python 的 Excel。
- DataFrame:一张表格。
- Series:一列数据。
3. 实战演练 (Action)
Step 1: 准备环境
bash
pip install requests beautifulsoup4 pandasStep 2: 编写抓取脚本 (Crawler)
新建 crawler.py。让 Claude 帮你写:
markdown
# Task
写一个简单的爬虫,抓取 `http://quotes.toscrape.com/` 的名言。
提取:名言内容 (text), 作者 (author), 标签 (tags)。
返回:List[Dict] 格式。Step 3: 清洗数据 (Cleaner)
新建 cleaner.py。
python
import pandas as pd
def clean_data(raw_data):
df = pd.DataFrame(raw_data)
# 去除空值
df.dropna(inplace=True)
# 去除重复
df.drop_duplicates(inplace=True)
# 格式化
df['author'] = df['author'].str.strip()
return dfStep 4: 整合 (Pipeline)
python
# main.py
from crawler import get_quotes
from cleaner import clean_data
raw = get_quotes()
df = clean_data(raw)
print(df.head())4. 常见问题 (FAQ - Vibe Style)
Q: 爬虫被封 IP 怎么办? A: 慢一点! 加 time.sleep(1)。如果要大规模抓,就要买代理池了(那是高级课程的内容)。
Q: Pandas 报错看不懂? A: 把报错复制给 AI。 Pandas 的报错通常很长,但关键信息就在最后一行。
Q: 为什么要用 Pandas?用 List 不行吗? A: 量小可以。 但如果你要处理 10 万条数据,Pandas 比 List 快 100 倍,而且代码更简洁。
5. 验收标准 (Definition of Done)
- 成功运行
crawler.py,抓取到至少 10 条数据。 - 成功运行
cleaner.py,输出一个干净的 DataFrame。 - 没有乱码,没有空行。
Next Mission: L15. 核心模块开发 (2):业务逻辑的大脑