Skip to content

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 pandas

Step 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 df

Step 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)

  1. 成功运行 crawler.py,抓取到至少 10 条数据。
  2. 成功运行 cleaner.py,输出一个干净的 DataFrame。
  3. 没有乱码,没有空行。

Next Mission: L15. 核心模块开发 (2):业务逻辑的大脑

基于 Claude Code 构建