kp-005

Python 爬虫工具链与环境搭建

入门 ≈ 20 分钟 环境工具链requestsscrapyplaywright虚拟环境

前置知识

本文基于模型知识整理,建议核对官方文档(见 参考资料)。

一句话定义

一套以 Python 为核心的采集工具链:requests(请求)+ lxml/BS4(解析)+ Playwright(渲染)+ Scrapy(框架)+ pandas/SQLite(落地),配合隔离的虚拟环境与三个官方练习站。

为什么重要

工具选错会加倍返工:该用接口解析的场景上了浏览器自动化(慢 10 倍),该用框架的场景堆脚本(不可维护)。本篇给出选型地图与环境基线,后续每篇直接复用。

前置知识

kp-001、kp-002、kp-003;Python 安装经验。

核心概念

工具角色何时用
requestsHTTP 客户端静态页与接口(默认首选)
lxml / BeautifulSoupHTML 解析有现成 HTML、选择器抽取
parsel选择器(Scrapy 同款)想统一 XPath/CSS 语法
Playwright / Selenium浏览器自动化渲染后才有数据、需交互
Scrapy采集框架多页面、需调度去重管道的正式项目
aiohttp / httpx异步 HTTP自建高并发下载器
pandas / SQLite / Parquet落地与分析清洗、入库、统计
mitmproxy中间人抓包分析 App 与复杂站点流量
Chrome DevTools浏览器内分析日常第一入口

原理与机制

环境基线(每个项目独立隔离,绝不全局裸装):

mkdir my-crawler && cd my-crawler
python3 -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install requests lxml beautifulsoup4 playwright pandas
python -m playwright install chromium   # Playwright 需另装浏览器内核
pip freeze > requirements.txt      # 锁定版本,保证可复现

三个零成本合法练习场(专为爬虫学习而设,可放心练手):

  • httpbin.org:回显请求,用于验证头部/Cookie/方法。
  • books.toscrape.com:静态列表页,练选择器与翻页。
  • quotes.toscrape.com:含登录与 JS 版本,练会话与渲染。

实例或案例

同一需求的选型对照:抓 1000 个静态商品页 → requests + lxml,半小时完成;同站改版为 SPA → 先抓包找接口(kp-014),接口拿不到再上 Playwright(kp-013);演变为长期多站点监控 → 迁移到 Scrapy(kp-018)。路线永远是:接口优先于渲染,脚本够用不上框架。

常见误区

  • 误区一:全局 pip 装包。 版本互相污染、无法复现;venv 是底线,requirements.txt 是交接礼仪。
  • 误区二:默认首选 Playwright。 浏览器实例占内存数百 MB、速度慢一个数量级;只在接口不可得时使用。
  • 误区三:跳过 DevTools 学习。 80% 的采集分析在 DevTools 的 Network 面板完成,这是比任何库都常用的工具。

自测题

  1. 新项目第一步装包前要做什么?

答:创建并激活 venv,之后所有安装都限定在项目环境内,最后 freeze 固化依赖。

  1. 什么时候才值得动用浏览器自动化?

答:确认数据由 JS 渲染(kp-012 的判别法)且抓包(kp-014)找不到可直连的接口时。

  1. 列出三个练习站及各自用途。

答:httpbin 验证请求、books 练静态解析翻页、quotes 练登录会话与渲染。

与其他知识点的关系

kp-006/kp-007 是 requests 与解析的深潜;kp-013/kp-018 分别展开 Playwright 与 Scrapy;kp-011 依赖本篇装好的 pandas/SQLite。

延伸阅读

各工具官方文档首页:requests、Scrapy、Playwright Python 版;requests 官方的 quickstart。

相关知识点

学习进度