Scrapling:9.5 万星的 Python 爬虫框架,从单页抓取到全站爬取,还自带 MCP 给 AI 智能体用

Scrapling 仓库卡片

写爬虫这件事,很多人是从 requests + BeautifulSoup 起手的,页面一复杂就得自己补浏览器、补代理、补重试、补导出。Scrapling 想把这一整条链路收进一个库里:快速 HTTP 请求、隐身浏览器、强力解析、并发爬取,再加一个给 AI 智能体用的 MCP 服务器。今天它登上 GitHub 日榜,仓库已有 9.5 万星。

Scrapling 是 D4Vinci 开源的 Python 爬虫框架,BSD-3-Clause 协议,2024 年 10 月创建,到现在 1785 次提交、54 个版本,10,012 个 Fork。它覆盖的范围是从一次请求到全站爬取,官方的定位就是“Effortless Web Scraping for the Modern Web”。

抓取:从静态页到反爬站点

最上层是 Fetcher,发快速 HTTP 请求,还能模拟浏览器的 TLS 指纹和请求头、支持 HTTP/3。遇到需要渲染 JavaScript 的动态站,就换 StealthyFetcher,走 Playwright 的 Chromium 或谷歌 Chrome 做完整的浏览器自动化,带隐身能力,能处理 Cloudflare 的 Turnstile/Interstitial 验证。

会话是持久的,Cookie 和状态可以在多次请求间保留;代理轮换内置在库里,支持按循环或自定义策略轮换,也支持单次请求指定代理。浏览器模式下还能屏蔽指定域名、内置约 3500 个已知广告与追踪域名的广告屏蔽,以及用 DNS-over-HTTPS 防止代理场景下的 DNS 泄漏。还有一个少见的功能:开着浏览器会话时可以后台捕获它发出的 API 请求,再去搜这些保存下来的响应,等于是把页面背后的接口也顺手抓下来。

解析与爬取:CSS、XPath、正则都能用

解析支持 CSS、XPath、文本和正则搜索,还有自适应元素跟踪(页面结构变了也能跟上)、相似元素匹配,输出可以是干净的 Markdown。写爬虫用 Scrapy 风格的 Spider API:定义 start_urls 和异步 parse 回调,用 Request/Response 对象组织逻辑。

爬取层面有并发控制、按域名的限速和下载延迟、自动重试、AutoThrottle(按目标站点的响应速度自己调延迟,被限速就自动加倍、恢复后再加速)、暂停与恢复(Ctrl+C 优雅停止,下次用同一个目录接着跑)、流式输出、robots.txt 遵守开关,还有 CrawlSpider、SitemapSpider、XMLFeedSpider、CSVFeedSpider、ShopifySpider 这些现成的模板。结果导出支持 JSON、JSONL、CSV、XML。

给 AI 智能体准备的 MCP 与 Skill

比较新的一点是,Scrapling 自带 MCP 服务器和 Agent Skill,AI 智能体可以直接通过 MCP 浏览网页、提取数据;人也可以在终端里用 CLI 命令和交互式 shell 操作。等于同一套能力,三种入口:Python 代码、终端、AI 智能体。

上手:三行抓一个页面

安装就是一条命令:

pip install scrapling

抓一个页面、取字段,写法很短:

from scrapling.fetchers import Fetcher

page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()
print(quotes)

要扩成爬虫,就用 Spider:

from scrapling.spiders import Spider, Response

class QuotesSpider(Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com/"]

    async def parse(self, response: Response):
        for quote in response.css('.quote'):
            yield {
                "text": quote.css('.text::text').get(),
                "author": quote.css('.author::text').get(),
            }

result = QuotesSpider().start()
print(len(result.items))  # 10
result.items.to_json("quotes.json")

完整的用法、选择器、会话管理和 MCP 配置都在官方文档 scrapling.readthedocs.io。想跟进更新可以看它的 Discord 和 X 账号 @Scrapling_dev。

一句话总结:如果你平时要固定抓一批页面、或者想让手头的 AI 智能体自己去网上取数,Scrapling 把请求、渲染、反爬、解析、爬取、导出这一套都包了,9.5 万星的体量也说明它经得起用。

同样带 Agent Skill 的工具,可以看看 mattpocock/skills:31 万星的 Agent Skills 合集;想让 AI 智能体直接操作桌面应用,可以看看 agent-desktop:Vercel 开源的电脑操作 CLI。

转自 GitHub 仓库 D4Vinci/Scrapling 的 README,原文链接:https://github.com/D4Vinci/Scrapling

© 版权声明
THE END
喜欢就支持一下吧
点赞34 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容