Scrapling

Scrapling 是一个自适应网页抓取库,支持多种抓取方式和 AI 集成,能够自动学习网站变化并重新定位元素,提供高性能解析和开发者友好体验。

158 浏览
2025-12-09 发布

详细介绍

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 助手完成网页抓取任务。

网页爬虫 数据爬取 爬虫系统

相关服务推荐

查看更多