crawlee-python
Python 版全能网页爬虫框架,支持 HTTP + 浏览器自动化双引擎,可绕过反爬采集 AI 训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Python 版全能网页爬虫框架,支持 HTTP + 浏览器自动化双引擎,可绕过反爬采集 AI 训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Crawlee Python 官方Banner,展示了其对多爬虫引擎的统一封装能力
想象一下这个场景:你是一名AI工程师,需要为训练数据集采集10万个产品页面。你会怎么做?
大多数人的第一反应是打开浏览器,一个页面一个页面地复制。或者写一个简单的 Python 脚本,用 requests 抓取 HTML,然后写正则表达式解析内容。但很快问题就来了:网站加了反爬机制,请求被拒绝;需要执行JavaScript才能渲染的内容抓不到;采集速度太慢,10万个页面要跑几天;代理IP池管理复杂,一不小心就被封IP……
Crawlee 正是为解决这些问题而生。它是 Apify 公司(一家专注于网页采集和自动化任务的捷克科技公司)开源的Python库,提供了从HTTP请求到浏览器自动化的完整工具链,让开发者不用再从零造轮子。
Apify 最初是一家提供网页采集 SaaS 平台的公司,其核心产品 Apify Platform 允许用户在云端运行各种网页采集任务。在运营平台的过程中,Apify 团队积累了大量的爬虫最佳实践,发现很多开发者在使用 JavaScript 时苦于没有统一的好工具,于是用 TypeScript 开发了 Crawlee-JS,并在 GitHub 上获得了广泛认可。
Python 版本的 Crawlee 则是响应社区需求的产物——Python 在数据科学和 AI 领域的主导地位,使得 Python 开发者对网页采集工具的需求极为强烈。Crawlee-Python 在 2022 年正式发布,迅速成为 Python 爬虫领域的明星项目,目前 GitHub 标星超过 9100 个,是 Python 爬虫/自动化领域最活跃的项目之一。
Crawlee 最大的特色是它对多种爬虫引擎的统一抽象。不管你是需要轻量快速地抓取静态页面,还是需要渲染JavaScript的复杂单页应用,Crawlee 都有对应的解决方案:
BeautifulSoupCrawler:基于 HTTP 库的轻量级爬虫,速度极快,适合结构清晰的静态页面。用 httpx 做 HTTP 通信,用 BeautifulSoup 解析 HTML,就像用电动螺丝刀替代手动螺丝刀,效率大幅提升。
PlaywrightCrawler:基于 Playwright 的浏览器自动化爬虫,可以执行完整的JavaScript、模拟用户交互(点击、滚动、填表),适合抓取 React/Vue 等前端框架构建的动态页面。这也是 Crawlee 最有价值的爬虫类型——它把 Playwright 的浏览器控制能力封装成统一的请求/响应接口,让开发者无需关心底层细节。
HTTP爬虫(httpx/curl-impressionate):除 BeautifulSoup 外,Crawlee 还支持基于 httpx 和 curl-impressionate 的 HTTP 爬虫,前者支持 HTTP/2 和异步,后者可以模拟真实浏览器的 TLS 指纹,进一步提升绕过反爬的能力。
自适应爬虫(Adaptive Playwright Crawler):这是 Crawlee 的高级特性,利用机器学习(scikit-learn + Jaro-Winkler 算法)自动判断页面的最佳抓取策略。根据官方文档,自适应爬虫会根据已采集页面自动学习内容模式,动态调整爬取参数,减少无效请求。

图2:Crawlee 架构图,展示了从 HTTP 客户端到浏览器自动化的完整技术栈
Crawlee 的源代码结构非常清晰,采用了高度模块化的设计:
crawlee/crawlers/:核心爬虫类,包含 BeautifulSoup、Playwright、HTTP 等多种爬虫实现crawlee/browsers/:浏览器池管理,支持 Playwright 和 Stagehand 两种浏览器后端crawlee/_autoscaling/:自动扩缩容池,根据系统资源动态管理并发爬取crawlee/_utils/:工具函数集合(重试、代理、robots.txt解析、URL工具等)crawlee/storage/:存储抽象层,支持本地JSON/CSV、SQLite、PostgreSQL、MySQL、Rediscrawlee/_service_locator/:依赖注入容器,用于管理各组件的生命周期依赖方面,Crawlee 的核心非常轻量,基础依赖仅约 20 个包,包括 pydantic(数据验证)、pyee(事件发射器)、tldextract(域名解析)、yarl(URL处理)等。Playwright 浏览器支持则作为可选依赖单独安装,CLI 工具依赖 typer 和 rich 提供命令行交互体验。
Crawlee 的安装和使用极度友好。基础安装:
pip install 'crawlee[all]'
playwright install
如果只需要 HTTP 爬虫:pip install crawlee[httpx] 即可,体积更小。
Crawlee 还提供了官方的 CLI 工具,用 uvx crawlee[cli] create my-crawler 可以直接拉取官方模板,快速启动一个爬虫项目。模板包含完整的项目结构、示例代码和配置,开箱即用。

图3:Crawlee Chrome 浏览器自动化抓取演示
Crawlee 内置了 AutoscaledPool(自动扩缩容池),这是一个非常实用的特性。它会根据系统 CPU 和内存使用情况,自动调整并发爬取的任务数量。当机器负载高时减少并发,负载低时增加并发,既保证了采集效率,又不会压垮系统。
这对于需要长时间运行的采集任务特别有用——比如半夜跑一个几万页面的采集任务,你不需要守在电脑前盯着,Crawlee 会自动管理资源。

图4:Crawlee 自动扩缩容示意图,根据系统资源动态调整并发数量
现代网站普遍部署了反爬机制,Crawlee 在这方面也做了充分准备。内置代理配置支持轮换策略,可以对接市面上主流的代理服务商(如 Apify Proxy、ScraperAPI、Oxylabs 等),自动在多个代理IP之间切换,大幅降低被封概率。配合 curl-impressionate 的 TLS 指纹模拟,还可以进一步伪装成真实浏览器。
AI / LLM 数据采集:为训练大语言模型采集高质量的网页数据,是 Crawlee 最热门的应用场景。配合 RAG(检索增强生成)架构,可以将采集到的数据向量化为知识库。
电商价格监控:抓取竞品价格、库存、评价数据,用于商业智能分析。
新闻舆情采集:持续监控特定主题的新闻、社交媒体内容。
网站迁移/备份:将静态网站内容完整采集下来做备份或迁移。
浏览器自动化测试:Crawlee 的 Playwright 集成也可以用于 UI 测试、自动化填表等场景。

图5:Crawlee 与主流工具链的集成关系,展示了其作为数据采集中间件的定位
Crawlee 也有其局限性,需要在选型时加以考虑:
无原生 Web UI:Crawlee 是纯 Python 库,没有提供 Web 界面,所有配置和运行都通过代码进行。对于非技术人员,上手门槛比 Scrapy 更高——虽然 CLI 提供了模板,但仍然需要编写 Python 代码。
无容器化部署支持:没有提供 Dockerfile 或 docker-compose,无法通过容器一键部署到生产环境。对于需要在 Kubernetes 集群中运行的场景,需要自己编写 Dockerfile,基于 Python 镜像安装 Crawlee 依赖。
反爬对抗是猫鼠游戏:尽管 Crawlee 内置了多种反爬对抗策略,但现代网站的反爬技术(行为分析、设备指纹等)也在不断进化,无法保证对所有网站都有效。
浏览器资源消耗:PlaywrightCrawler 需要启动 Chrome/Firefox 浏览器进程,相比纯 HTTP 爬虫,内存和 CPU 消耗显著更高。
Crawlee 的出现填补了 Python 爬虫领域的一个关键空白:此前 Python 开发者如果想做浏览器自动化,通常需要直接使用 Playwright/Selenium API;如果想做 HTTP 采集,则用 Scrapy/requests+BeautifulSoup。两套工具两套写法,没有统一抽象。
Crawlee 用统一的接口同时覆盖了这两个场景,并额外提供了代理轮换、自动扩缩容、数据存储等企业级功能,使得 Python 开发者终于有了一个可以"All-in-One"的采集解决方案。
从增长曲线看,Crawlee-Python 在 9100+ 标星、746 个 Fork、Apache-2.0 开源许可、Apify 商业公司背书,以及活跃的 Discord 社区(开发者活跃度很高),都说明这个项目具有较强的持续性和可靠性,值得作为长期技术选型。