详细介绍
Scrapling 是一个功能强大的自适应网页抓取库,能够自动学习网站结构变化并重新定位元素,确保抓取任务在网站更新后依然有效。它支持多种抓取方式,包括 HTTP 请求、动态加载和浏览器自动化,并提供隐身模式以绕过反爬虫系统。Scrapling 还集成了 AI 功能,通过 MCP 服务器为 AI 工具(如 Claude、Cursor)提供智能内容提取服务,显著减少 token 使用并提高处理效率。
核心功能
Scrapling 提供了多种核心功能,使其成为网页抓取和数据提取的强大工具:
- 自适应抓取:Scrapling 能够自动适应网站结构的变化,确保长期稳定的数据提取能力。
- 智能内容提取:基于自然语言描述,Scrapling 能够精准定位和提取网页内容,无需编写复杂的选择器。
- Token 使用优化:在将内容传递给 AI 之前进行预处理,只提取相关部分,大幅减少 token 消耗。
- 多格式输出:支持 JSON、文本、Markdown 等多种输出格式,满足不同 AI 模型的需求。
- 隐身模式:内置反检测技术,能够绕过 Cloudflare 等反爬虫系统。
- 高性能解析:优化的性能和内存使用,使其在抓取速度和资源消耗方面优于大多数 Python 抓取库。
- 开发者友好体验:提供丰富的 API、交互式 shell、自动选择器生成、类型提示等功能,提升开发效率。
安装方法
Scrapling 需要 Python 3.10 或更高版本。基础安装命令如下:
pip install scrapling从 v0.3.2 开始,此安装仅包括解析引擎及其依赖项,不包括任何抓取器或命令行依赖项。
如果需要使用额外功能,可以安装以下可选依赖项:
pip install "scrapling[fetchers]"pip install "scrapling[ai]"pip install "scrapling[shell]"pip install "scrapling[all]"安装完成后,还需要使用以下命令安装浏览器依赖项:
scrapling install使用方法
Scrapling 提供了多种使用方式,包括同步和异步请求、会话管理、浏览器自动化等。
from scrapling.fetchers import Fetcher, StealthyFetcher, DynamicFetcher
from scrapling.fetchers import FetcherSession, StealthySession, DynamicSession
# HTTP requests with session support
with FetcherSession(impers) as session:
page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
quotes = page.css('.quote .text::text')
# Or use one-off requests
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text')
# Advanced stealth mode
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')
# Or use one-off request style
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare')
data = page.css('#padded_content a')
# Full browser automation
with DynamicSession(headless=True, disable_resources=False, network_idle=True) as session:
page = session.fetch('https://quotes.toscrape.com/', load_dom=False)
data = page.xpath('//span[@class="text"]/text()')
# Or use one-off request style
page = DynamicFetcher.fetch('https://quotes.toscrape.com/')
data = page.css('.quote .text::text')使用示例
Scrapling 提供了多种使用场景的示例,包括基础用法和高级用法。
from scrapling.fetchers import Fetcher
# 保持原始代码和注释不变
from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher
# 启用自适应模式
StealthyFetcher.adaptive = True
# 在隐蔽模式下获取网站源代码!
page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True)
print(page.status)
200
# 抓取能够在网站设计变更后仍能正常工作的数据!
products = page.css('.product', auto_save=True)
# 稍后,如果网站结构发生变化,传递 `adaptive=True` 参数
products = page.css('.product', adaptive=True)
# Scrapling 仍然能够找到它们!使用场景
Scrapling 适用于多种需要从网页提取结构化数据的场景,包括:
- 市场研究
- 价格监控
- 内容聚合
- 竞争分析
- 学术研究
Scrapling 的 MCP 服务器特别适合需要 AI 辅助进行数据分析和处理的场景。
注意事项
在使用 Scrapling 时,需要注意以下几点:
- 需要安装和配置 MCP 服务器环境。
- 对于极其复杂的动态内容可能仍需人工干预。
- 需要网络连接才能进行网页抓取。
- 某些网站可能有严格的访问限制。
Scrapling 提供了丰富的功能和灵活的使用方式,使其成为网页抓取和数据提取的强大工具。无论是开发者还是非技术人员,都可以通过自然语言指令让 AI 助手完成网页抓取任务。