目录
- [1. 项目简介](#1. 项目简介)
- [2. Scrapling 解决了什么问题](#2. Scrapling 解决了什么问题)
- [3. 核心特性速览](#3. 核心特性速览)
- [4. 安装与环境准备](#4. 安装与环境准备)
- [4.1 基础安装(仅解析器)](#4.1 基础安装(仅解析器))
- [4.2 抓取能力安装(推荐)](#4.2 抓取能力安装(推荐))
- [4.3 AI / Shell / 全量依赖](#4.3 AI / Shell / 全量依赖)
- [4.4 Docker 方式](#4.4 Docker 方式)
- [5. 快速上手:3 种抓取模式](#5. 快速上手:3 种抓取模式)
- [5.1 轻量 HTTP 抓取(Fetcher)](#5.1 轻量 HTTP 抓取(Fetcher))
- [5.2 反爬场景(StealthyFetcher)](#5.2 反爬场景(StealthyFetcher))
- [5.3 动态页面渲染(DynamicFetcher)](#5.3 动态页面渲染(DynamicFetcher))
- [6. 解析能力:CSS / XPath / 类 BS4 API](#6. 解析能力:CSS / XPath / 类 BS4 API)
- [7. 命令行能力:无需写代码也能提取内容](#7. 命令行能力:无需写代码也能提取内容)
- [8. 进阶:Spider 爬虫框架能力](#8. 进阶:Spider 爬虫框架能力)
- [9. 实战建议与选型建议](#9. 实战建议与选型建议)
- [10. 注意事项(合规与风控)](#10. 注意事项(合规与风控))
- [11. 总结](#11. 总结)
1. 项目简介
Scrapling 是一个现代化 Python 爬虫框架,目标是把"页面抓取 + 内容解析 + 动态渲染 + 反反爬 + 爬虫调度"统一在一套 API 下。
它支持从最简单的 HTTP 页面采集,到需要浏览器渲染/绕过基础防护的复杂站点抓取,还提供了 Spider 模式做并发爬取与断点恢复。
一句话理解:Scrapling = 解析器 + 多种 Fetcher + Spider 框架 + CLI 工具。
2. Scrapling 解决了什么问题
传统爬虫开发常见痛点:
- 工具链割裂:
requests + lxml + playwright + 自己写调度,维护成本高。 - 站点类型多:静态站、JS 动态站、反爬站点混在一起。
- 开发切换频繁:项目初期只要 HTTP,后期又得上浏览器自动化。
- 大规模运行时缺能力:并发调度、重试、暂停恢复、导出流水线都要自己补。
Scrapling 的思路是:用统一语义覆盖不同抓取场景,减少重构成本。
3. 核心特性速览
- 多抓取引擎 :
Fetcher:轻量快速 HTTP 抓取StealthyFetcher:偏反爬/隐身抓取DynamicFetcher:浏览器渲染抓取(动态页面)
- 统一解析接口:支持 CSS、XPath、类 BeautifulSoup 查找方式。
- Session 管理:支持会话复用、Cookie 状态保持。
- Spider 框架能力:并发、限速、阻断检测、断点恢复、流式产出。
- CLI 工具 :支持
scrapling shell和scrapling extract,快速调试和提取。 - 可扩展依赖:按需安装 fetchers / ai / shell / all。
4. 安装与环境准备
要求:Python 3.10+
4.1 基础安装(仅解析器)
bash
pip install scrapling
说明:仅包含解析引擎,不含 fetchers 及浏览器依赖。
4.2 抓取能力安装(推荐)
bash
pip install "scrapling[fetchers]"
# 安装浏览器与系统依赖
scrapling install
# 强制重装(可选)
scrapling install --force
4.3 AI / Shell / 全量依赖
bash
# AI/MCP 能力
pip install "scrapling[ai]"
# Shell 与 extract 命令
pip install "scrapling[shell]"
# 全量安装
pip install "scrapling[all]"
安装这些扩展后,如涉及浏览器抓取,仍需执行
scrapling install。
4.4 Docker 方式
bash
docker pull pyd4vinci/scrapling
# 或
docker pull ghcr.io/d4vinci/scrapling:latest
5. 快速上手:3 种抓取模式
5.1 轻量 HTTP 抓取(Fetcher)
python
from scrapling.fetchers import Fetcher, FetcherSession
with FetcherSession(impersonate='chrome') as session:
page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
quotes = page.css('.quote .text::text').getall()
print(quotes)
适用:普通静态页面、接口页、低成本高吞吐采集。
5.2 反爬场景(StealthyFetcher)
python
from scrapling.fetchers import StealthyFetcher, StealthySession
with StealthySession(headless=True, solve_cloudflare=True) as session:
page = session.fetch('https://nopecha.com/demo/cloudflare', google_search=False)
data = page.css('#padded_content a').getall()
print(data)
适用:有基础防护、请求指纹敏感的网站。
5.3 动态页面渲染(DynamicFetcher)
python
from scrapling.fetchers import DynamicFetcher, DynamicSession
with DynamicSession(headless=True, network_idle=True) as session:
page = session.fetch('https://quotes.toscrape.com/', load_dom=False)
data = page.xpath('//span[@class="text"]/text()').getall()
print(data)
适用:重 JS 渲染、首屏数据不在 HTML 源码中的页面。
6. 解析能力:CSS / XPath / 类 BS4 API
Scrapling 的解析接口比较统一:
python
from scrapling.fetchers import Fetcher
page = Fetcher.get('https://quotes.toscrape.com/')
# CSS
quotes_css = page.css('.quote')
# XPath
quotes_xpath = page.xpath('//div[@class="quote"]')
# 类 BeautifulSoup 风格
quotes_bs = page.find_all('div', class_='quote')
# 文本查找
quote_by_text = page.find_by_text('quote', tag='div')
如果你只想把 Scrapling 当解析器用,也可以直接:
python
from scrapling.parser import Selector
page = Selector('<html>...</html>')
7. 命令行能力:无需写代码也能提取内容
进入交互式抓取 shell
bash
scrapling shell
一条命令提取内容
bash
scrapling extract get 'https://example.com' content.md
scrapling extract get 'https://example.com' content.txt --css-selector '#fromSkipToProducts' --impersonate 'chrome'
scrapling extract fetch 'https://example.com' content.md --css-selector '#fromSkipToProducts' --no-headless
这对于临时采集、调试选择器、给运营同学快速导出内容非常实用。
8. 进阶:Spider 爬虫框架能力
根据项目文档,Scrapling Spider 提供了接近 Scrapy 的开发体验,并支持:
- 并发抓取与限速策略
- 多会话模型(HTTP + 浏览器)混合
- Blocked 请求检测与重试
- 中断后断点恢复(Checkpoint)
- 流式输出(适合长任务和实时管道)
这意味着它不仅适合"脚本式抓取",也能支撑"工程化爬虫任务"。
9. 实战建议与选型建议
给一个简单选型策略:
- 先用 Fetcher(成本最低、速度最快)
- 被拦或结果异常时,升级到 StealthyFetcher
- 页面数据依赖前端渲染时,切到 DynamicFetcher
- 当链接规模上万、需要调度治理时,切 Spider 模式
这样做的好处是:渐进升级,避免一开始就上最重方案导致资源浪费。
10. 注意事项(合规与风控)
- 严格遵守目标网站
robots.txt与服务条款。 - 不采集和传播受保护的隐私数据。
- 控制请求频率,避免对目标服务造成压力。
- 将此类工具用于合法、合规、授权的业务场景。
11. 总结
Scrapling 的价值在于:把抓取、解析、动态渲染、反爬和工程化能力放进一个统一框架,既适合个人做数据采集,也适合团队搭建可维护的爬虫体系。
如果你正在从"脚本爬虫"升级到"工程化爬虫",它是一个值得实测的项目。