4.1 数据采集概述
数据采集(Data Collection)就是把外部数据(网页、API、文件、数据库)取到本地。最常见、最适合入门的就是网页爬虫,通常分三步:
- 请求:用 HTTP 把网页源码下载下来;
- 解析:从 HTML 里提取想要的字段;
- 存储:把结果写成文件或存入数据库。
合规提醒:只采集公开数据,遵守目标站点的
robots.txt,控制请求频率,不碰需登录的隐私内容。
用什么库?——优先标准库
很多教程第一句就是pip install requests beautifulsoup4,但这两包在你的环境里经常因为镜像超时而装不上。其实纯标准库就能完成全部工作:
需求 | 标准库方案 | 行业常用(需安装) |
发 HTTP 请求 |
|
|
解析 HTML |
|
|
存 CSV |
|
|
存 JSON |
|
|
存数据库 |
|
|
本章案例全部用标准库,你复制就能跑;文末附上requests + BeautifulSoup的对照写法,方便你了解业界习惯。
4.2 用标准库采集网页
4.2.1 发送请求:urllib
4.2.2 解析 HTML:html.parser
html.parser是 Python 自带的解析器,我们用它写一个轻量"链接提取器",只收集<a href="...">文本</a>:
4.3 完整案例:爬取新浪教育新闻
新浪文章链接格式固定为.../yyyy-mm-dd/doc-xxx.shtml,发布日期直接嵌在 URL 里,提取极方便。下面这段代码可以直接运行,产出sina_edu_news.csv(正是第三章 pandas 分析的素材)。
4.4 数据存储方案
采集结果有几种常见落盘方式,按"结构化程度 / 查询需求"选择:
方式 | 适合场景 | 优点 | 缺点 |
CSV | 表格数据、给 Excel / pandas 用 | 简单通用、肉眼可读 | 不适合海量、难做复杂查询 |
JSON | 嵌套结构、前后端接口 | 表达力强、原生支持 | 不适合关系型统计 |
SQLite | 需要查询/去重/多表关联 | 轻量数据库、支持 SQL | 比文本稍重 |
4.4.1 存 CSV(标准库 csv)
细节:
utf-8-sig(带 BOM)让 Excel 双击中文不乱码;newline=''避免多出空行。
4.4.2 存 JSON(标准库 json)
4.4.3 存 SQLite(标准库 sqlite3,支持去重与查询)
4.5 端到端流水线(采集 → 存储 → 分析)
把本笔记与第三章串起来,就是最基础的数据闭环:
骨架代码:
4.6 行业对照:requests + BeautifulSoup 写法
等你的环境能装第三方包时,同样的需求可以写得更"优雅"一些(功能等价,仅作了解):
区别:标准库
urllib + html.parser开箱即用、零依赖;requests + BeautifulSoup代码更简洁、生态更丰富,但需要pip install。课程作业优先保证能跑,推荐标准库写法。
4.7 反爬与异常处理
- 加 UA:默认请求头常被拦截,务必带
User-Agent。
- 控频率:循环采集时
time.sleep(1~3),别压垮对方服务器。
- 看 robots:
https://站点/robots.txt查允许范围。
- 兜底异常:网络会超时、页面会改版,用
try/except保护。
4.8 本章小结
- 采集 =urllib 请求 + html.parser 解析(标准库,零依赖、必能跑);
- 发布日期等字段常藏在 URL 或标签属性里,善用正则
(\d{4}-\d{2}-\d{2});
- 存储按需求选CSV(表格)/ JSON(嵌套)/ SQLite(查询);
- 与第三章的 pandas 组合,即构成「采集 → 存储 → 分析」最小闭环。