Scrapling 网页抓取:2026 年教程
什么是 Scrapling?
本文介绍如何使用 Scrapling 进行网页抓取,并演示 2026 年常见场景下的使用方法与示例。

Scrapling 是一个开源 Python 库,设计用于高效的网络搜索,具有独特的自适应能力。与旧版库(如 BeautifulSoup,Scrapling 可以借助内置的相似度算法自动适应轻微的 HTML 变化。它配备了自己的快速解析引擎,性能优于大多数 Python 抓取库。
Scrapling 支持使用 用于 JavaScript 渲染的 Playwright 通过多个取件器类别,每个类别都针对不同情况进行了优化。它包括先进的隐身模式功能,使用修改过的火狐浏览器绕过复杂的反僵尸保护。
Scrapling 的主要功能
- 自适应选择器:利用智能相似性算法,在 HTML 结构发生变化时自动重新定位元素
- 多种捕捉器类别:选择
捕捉器(HTTP)、动态捕获器(剧作家铬),以及隐形捕手(改装后的火狐浏览器,具有高级隐身功能) - 选择器连锁:无需循环即可连锁 CSS 和 XPath 选择器
- 会话管理:会话管理
FetcherSession,动态会话和隐身会话班级 - 异步支持:通过专用的异步会话类,为所有取件器提供完整的异步支持
- 正则集成:内置正则支持,配合
re()和re_first()方法 - CLI 工具:带有交互式 shell 的命令行界面,用于快速开发
- 高性能:优化性能,基准测试显示某些操作的速度比 BeautifulSoup 快达 698 倍
如何使用 Scrapling 进行网络抓取?
准备好掌握现代网络刮擦技术了吗?了解如何使用 Scrapling 轻松提取数据、适应网站变化并不被发现。
先决条件
- Python 3.10 或更新版本
- 安装刮板
安装
从 v0.3.2,Scrapling 采用模块化安装方式:
基本安装(只有解析器,没有获取器):
pip install scrapling
安装取件器和浏览器依赖项:
pip install "刮板[取物器]"
刮板安装
"(《世界人权宣言》) 刮板安装 命令下载所有浏览器及其系统依赖项和指纹处理工具。
安装一切(取件器、人工智能功能、CLI 工具):
pip install "潦草[全部]"
刮板安装
步骤 1:从网页获取 HTML
首先测试 Scrapling 能否访问目标网站。使用 捕捉器 类的 HTTP 请求:
from scrapling.fetchers import 获取器
page = Fetcher.get("https://www.scrapingcourse.com/ecommerce/")
print(页面.状态) # 应打印:200
print(page.html_content)
如果成功,您将看到 HTTP 状态代码 200 和网页的完整 HTML。
第 2 步:使用 CSS 选择器抓取产品数据
Scrapling 可以使用自适应选择器自动调整以适应微小的布局变化,但默认情况下该功能是禁用的。
首先,使用 DevTools 检查产品元素。对于本网站
- 产品名称以
h2.woocommerce-loop-product__title - 价格
.价格 - 图片
.woocommerce-LoopProduct-link img
from scrapling.fetchers import 获取器
page = Fetcher.get("https://www.scrapingcourse.com/ecommerce/")
# 提取产品数据
names = page.css("h2.woocommerce-loop-product__title")
prices = page.css(".价格")
images = page.css(".woocommerce-LoopProduct-link img")
产品数据 = []
for 名称、价格、图像 in zip(名称、价格、图像):
# 使用 regex 只提取价格编号
price_value = price.re_first(r'[d.,] ')
数据 = {
"name": name.text、
"price": f "${价格值}",
"图像": image.attrib["src"],
}
product_data.append(data)
print(product_data)
启用自适应选择器 (即使在网站更新后也能跟踪元素):
# 在全局范围内启用自适应功能
Fetcher.adaptive = True
page = Fetcher.get("https://www.scrapingcourse.com/ecommerce/")
# 保存元素属性以备将来调整
names = page.css(".product-name", auto_save=True)
# 以后,当网站结构发生变化时,使用自适应模式
names = page.css(".product-name", adaptive=True) # 即使 CSS 发生变化,Scrapling 也能找到它们!
步骤 3:启用隐身模式
许多网站使用 Cloudflare 等反爬工具来阻止爬虫。Scrapling 的 隐形捕手 它使用的是经过修改的火狐浏览器,具有高级指纹欺骗功能。
使用 隐身会话 或 隐形捕手 与 无头=真 旗子
from scrapling.fetchers import 隐形捕手
# 一次性请求(打开和关闭浏览器)
page = StealthyFetcher.fetch(
"https://www.scrapingcourse.com/cloudflare-challenge/",
无头=True
)
print(页面.状态)
对于多次请求,使用会话保持浏览器打开:
from scrapling.fetchers import 隐身会话
# 保持浏览器打开以处理多个请求
with StealthySession(headless=True) as 会话
page = session.fetch("https://www.scrapingcourse.com/cloudflare-challenge/")
print(page.html_content)
请注意: "(《世界人权宣言》) solve_cloudflare 参数可用,但应根据特定的 Cloudflare 保护类型谨慎使用。
真实世界示例:抓取电子商务数据
这是一个完整的带错误处理功能的刮擦器:
from scrapling.fetchers import 获取器
page = Fetcher.get("https://www.scrapingcourse.com/ecommerce/")
if page.status != 200:
print(f "获取页面失败: {page.status}(网页状态")
exit()
names = page.css("h2.woocommerce-loop-product__title")
prices = page.css(".价格")
images = page.css(".woocommerce-LoopProduct-link img")
产品数据 = []
for 名称、价格、图像 in zip(名称、价格、图像):
price_value = price.re_first(r'[d.,] ')
数据 = {
"name": name.text、
"price": f "${价格值}",
"图像": image.attrib["src"],
}
product_data.append(data)
for product in 产品数据:
print(产品)
输出结构:
[
{"name": "可恶的连帽衫", "price": "$69.00", "图像": "https://...jpg"},
{"name": "阿尔忒弥斯的短跑", "price": "$45.00", "图像": "https://...jpg"}
]
拆包的局限性
刮削法对于中小型刮削效果很好,但也会遇到一些问题:
- 无内置代理旋转功能:不支持旋转代理或自动地理定位
- 基于浏览器的重型搜索资源:
动态捕获器和隐形捕手使用浏览器实例,消耗大量内存 - 自适应功能需要手动启用:默认禁用自适应功能,需要明确配置
- 无扩展基础设施:您需要自己管理并发、重试和分布式刮擦
- 仅用于自适应的第一要素:保存自适应数据时,只保存第一个元素的属性
扩展技巧:使用明亮数据进行代理管理
要克服 Scrapling 的代理限制,可将其与类似于 Bright Data 或 Oxylabs.这些供应商通常提供 住宅代理, 轮换 IP和地理定位。我与这些品牌没有任何关联!
FetcherSession 示例:
from scrapling.fetchers 导入 FetcherSession
代理 = {
"http": "http://username:[email protected]:22225",
"https": "http://username:[email protected]:22225",
}
with FetcherSession() as 会议:
页码 = 届会。get(
"https://www.scrapingcourse.com/ecommerce/",
代理=代理
)
print(page.html_content)
您需要一个具有适当凭证的账户。该集成可帮助您避免 IP 禁止,并以更大的流量进行搜索。
刮擦的最佳做法
需要时启用自适应选择器:使用 自动保存=真 针对可能会因网站更新而中断的关键选择器
选择正确的捕捉器:
捕捉器静态网站(最快)动态捕获器适用于 JavaScript 功能较强的网站,提供基本保护隐形捕手适用于具有高级反僵尸系统的网站
使用会话处理多个请求:通过会话类重复使用浏览器实例,减少开销
轮流代理:防止大规模行动中的 IP 屏蔽
添加速率限制:使用 time.sleep() 或队列系统来限制请求
利用内置 Regex:使用 .re() 和 .re_first() 精确提取数据的方法
优雅地处理错误:始终检查响应状态并处理异常
使用 Async 实现并发:杠杆作用 AsyncFetcher 并行请求的异步会话
结论
Scrapling 为您提供了一种更简洁、更灵活的方式来构建 2025 版的刮擦器。它的自适应选择器和多种获取器选项使其成为各种网站的理想选择,从简单的静态页面到具有复杂的反僵尸保护功能的网站。不过,它并非刀枪不入--大规模操作仍需要代理轮转和分布式系统等外部基础设施。
将 Scrapling 与 Bright Data 或其他任何工具配合使用 高质量的旋转代理这样,您就拥有了一个无需持续维护就能应对大多数刮擦挑战的强大设置。该库的模块化设计(自 v0.3.2)意味着您只需安装所需的内容,其 92% 测试覆盖范围可确保可靠性。
有问题要问我?请在评论中告诉我!

